@@ -584,9 +584,9 @@ def get_buffer(self, sizehint: int) -> memoryview:
584
584
If any data does not fit into the returned buffer, this method will be called again until
585
585
either no data remains or an empty buffer is returned.
586
586
"""
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
588
588
if sizehint == 0 :
589
- return memoryview (bytearray (256 ))
589
+ return memoryview (bytearray (16 ))
590
590
if self ._overflow is not None :
591
591
return self ._overflow [self ._overflow_index :]
592
592
return self ._buffer [self ._end_index :]
@@ -617,6 +617,8 @@ def buffer_updated(self, nbytes: int) -> None:
617
617
self ._end_index += nbytes
618
618
# All data of the current message has been received
619
619
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 ()
620
622
if self ._pending_messages :
621
623
result = self ._pending_messages .popleft ()
622
624
else :
@@ -659,8 +661,6 @@ def buffer_updated(self, nbytes: int) -> None:
659
661
nbytes_reprocess = self ._end_index - self ._start_index
660
662
self ._end_index -= nbytes_reprocess
661
663
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 ()
664
664
665
665
def process_header (self ) -> tuple [int , int ]:
666
666
"""Unpack a MongoDB Wire Protocol header."""
0 commit comments