File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -327,7 +327,5 @@ def zstd_encode(payload):
327327def zstd_decode (payload ):
328328 if not zstd :
329329 raise NotImplementedError ("Zstd codec is not available" )
330- try :
331- return zstd .ZstdDecompressor ().decompress (payload )
332- except zstd .ZstdError :
333- return zstd .ZstdDecompressor ().decompress (payload , max_output_size = ZSTD_MAX_OUTPUT_SIZE )
330+ with zstd .ZstdDecompressor ().stream_reader (io .BytesIO (payload ), read_across_frames = True ) as reader :
331+ return reader .read ()
Original file line number Diff line number Diff line change @@ -124,3 +124,14 @@ def test_zstd():
124124 b1 = random_string (100 ).encode ('utf-8' )
125125 b2 = zstd_decode (zstd_encode (b1 ))
126126 assert b1 == b2
127+
128+
129+ @pytest .mark .skipif (not has_zstd (), reason = "Zstd not available" )
130+ def test_zstd_multi_frame ():
131+ """Test that zstd_decode handles multiple concatenated zstd frames."""
132+ frame1_data = b'some payload data ' * 100
133+ frame2_data = b'another frame of data ' * 100
134+ # Concatenate two independently compressed zstd frames
135+ multi_frame_payload = zstd_encode (frame1_data ) + zstd_encode (frame2_data )
136+ result = zstd_decode (multi_frame_payload )
137+ assert result == frame1_data + frame2_data
You can’t perform that action at this time.
0 commit comments