@@ -584,9 +584,9 @@ def get_buffer(self, sizehint: int) -> memoryview:
584584 If any data does not fit into the returned buffer, this method will be called again until
585585 either no data remains or an empty buffer is returned.
586586 """
587- # TODO: This is super hacky and is purely for debugging purposes
587+ # Check for SSL EOF edge case, no data will be written to the buffer we return
588588 if sizehint == 0 :
589- return memoryview (bytearray (256 ))
589+ return memoryview (bytearray (16 ))
590590 if self ._overflow is not None :
591591 return self ._overflow [self ._overflow_index :]
592592 return self ._buffer [self ._end_index :]
@@ -617,6 +617,8 @@ def buffer_updated(self, nbytes: int) -> None:
617617 self ._end_index += nbytes
618618 # All data of the current message has been received
619619 if self ._end_index + self ._overflow_index - self ._start_index >= self ._body_size :
620+ # Pause reading to avoid storing an arbitrary number of messages in memory before necessary
621+ self .transport .pause_reading ()
620622 if self ._pending_messages :
621623 result = self ._pending_messages .popleft ()
622624 else :
@@ -659,8 +661,6 @@ def buffer_updated(self, nbytes: int) -> None:
659661 nbytes_reprocess = self ._end_index - self ._start_index
660662 self ._end_index -= nbytes_reprocess
661663 self .buffer_updated (nbytes_reprocess )
662- # Pause reading to avoid storing an arbitrary number of messages in memory before necessary
663- self .transport .pause_reading ()
664664
665665 def process_header (self ) -> tuple [int , int ]:
666666 """Unpack a MongoDB Wire Protocol header."""
0 commit comments