Skip to content

Commit 01af881

Browse files
committed
Fix process_header offsets
1 parent e00e44f commit 01af881

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

pymongo/network_layer.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -603,8 +603,9 @@ def buffer_updated(self, nbytes: int) -> None:
603603
if self._pending_messages:
604604
done = self._pending_messages.popleft()
605605
else:
606-
done = asyncio.get_event_loop().create_future()
606+
done = asyncio.get_running_loop().create_future()
607607
done.set_result((self._start, self._body_length))
608+
self._start = 0
608609
self._done_messages.append(done)
609610
if self._length > self._body_length:
610611
self._read_waiter = asyncio.get_running_loop().create_future()
@@ -613,12 +614,14 @@ def buffer_updated(self, nbytes: int) -> None:
613614
extra = self._length - self._body_length
614615
self._length -= extra
615616
self._expecting_header = True
617+
self._body_length = 0
618+
self._op_code = None # type: ignore[assignment]
616619
self.buffer_updated(extra)
617620
self.transport.pause_reading()
618621

619622
def process_header(self) -> tuple[int, int]:
620623
"""Unpack a MongoDB Wire Protocol header."""
621-
length, _, response_to, op_code = _UNPACK_HEADER(self._buffer[:16])
624+
length, _, response_to, op_code = _UNPACK_HEADER(self._buffer[self._start : 16])
622625
# No request_id for exhaust cursor "getMore".
623626
if self._request_id is not None:
624627
if self._request_id != response_to:

0 commit comments

Comments
 (0)