File tree Expand file tree Collapse file tree 1 file changed +12
-4
lines changed Expand file tree Collapse file tree 1 file changed +12
-4
lines changed Original file line number Diff line number Diff line change @@ -673,7 +673,7 @@ def _decode_multipart_message(
673673
674674 marker = b'' .join ((b'--' , boundary ))
675675 delimiter = b'' .join ((b'\r \n ' , marker ))
676- data = b''
676+ data = bytearray ()
677677 j = 0
678678 with response :
679679 logger .debug ('decode message content' )
@@ -685,16 +685,24 @@ def _decode_multipart_message(
685685 if stream :
686686 logger .debug (f'decode message content chunk #{ i } ' )
687687 data += chunk
688- while delimiter in data :
688+
689+ prev_part_index = 0
690+ while True :
691+ delimiter_index = data .find (delimiter , prev_part_index )
692+ if delimiter_index < 0 :
693+ break
689694 logger .debug (f'decode message part #{ j } ' )
690- part , data = data .split (delimiter , maxsplit = 1 )
691- content = self ._extract_part_content (part )
695+ content = self ._extract_part_content (
696+ data [prev_part_index :delimiter_index ]
697+ )
698+ prev_part_index = delimiter_index + len (delimiter )
692699 j += 1
693700 if content is not None :
694701 logger .debug (
695702 f'extracted { len (content )} bytes from part #{ j } '
696703 )
697704 yield content
705+ data = data [prev_part_index :]
698706
699707 content = self ._extract_part_content (data )
700708 if content is not None :
You can’t perform that action at this time.
0 commit comments