diff --git a/rethinkdb/trio_net/net_trio.py b/rethinkdb/trio_net/net_trio.py index 8eb7fbe8..6ac42df2 100644 --- a/rethinkdb/trio_net/net_trio.py +++ b/rethinkdb/trio_net/net_trio.py @@ -237,8 +237,11 @@ async def _read_until(self, delimiter): return bytes(buffer) async def _read_exactly(self, num): + data = b'' try: - return await self._stream.receive_some(num) + while len(data) < num: + data += await self._stream.receive_some(num - len(data)) + return data except (trio.BrokenResourceError, trio.ClosedResourceError): self._closed = True