File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -307,10 +307,23 @@ fn read_wire_record(stream: &mut TcpStream) -> io::Result<Option<Vec<u8>>> {
307307 }
308308 let mut header = [ 0u8 ; 24 ] ;
309309 stream. read_exact ( & mut header) ?;
310+ let codec = header[ 2 ] ;
310311 let payload_len = u32:: from_le_bytes ( [ header[ 20 ] , header[ 21 ] , header[ 22 ] , header[ 23 ] ] ) as usize ;
311312 let mut payload = vec ! [ 0u8 ; payload_len] ;
312313 stream. read_exact ( & mut payload) ?;
313- Ok ( Some ( payload) )
314+ let mut _crc = [ 0u8 ; 4 ] ;
315+ stream. read_exact ( & mut _crc) ?;
316+ if codec == 1 {
317+ if payload. len ( ) < 4 {
318+ return Err ( io:: Error :: new ( io:: ErrorKind :: InvalidData , "LZ4 payload too short" ) ) ;
319+ }
320+ let uncompressed_len = u32:: from_le_bytes ( [ payload[ 0 ] , payload[ 1 ] , payload[ 2 ] , payload[ 3 ] ] ) as usize ;
321+ let decompressed = lz4_flex:: block:: decompress ( & payload[ 4 ..] , uncompressed_len)
322+ . map_err ( |err| io:: Error :: new ( io:: ErrorKind :: InvalidData , err. to_string ( ) ) ) ?;
323+ Ok ( Some ( decompressed) )
324+ } else {
325+ Ok ( Some ( payload) )
326+ }
314327}
315328
316329fn build_logs_request ( service_name : & str , message : & str ) -> ExportLogsServiceRequest {
You can’t perform that action at this time.
0 commit comments