diff --git a/client/src/telethon/_impl/mtsender/sender.py b/client/src/telethon/_impl/mtsender/sender.py index b8d3ca8a..fbc42a32 100644 --- a/client/src/telethon/_impl/mtsender/sender.py +++ b/client/src/telethon/_impl/mtsender/sender.py @@ -240,7 +240,7 @@ class Sender: async def step(self) -> None: if not self._writing: self._writing = True - self._try_fill_write() + await self._try_fill_write() self._writing = False if not self._reading: @@ -265,7 +265,7 @@ class Sender: else: self._on_net_read(recv_data) - def _try_fill_write(self) -> None: + async def _try_fill_write(self) -> None: for request in self._requests: if isinstance(request.state, NotSerialized): if (msg_id := self._mtp.push(request.body)) is not None: @@ -282,6 +282,8 @@ class Sender: if isinstance(request.state, Serialized): request.state = Sent(request.state.msg_id, container_msg_id) + await self._writer.drain() + def _on_net_read(self, read_buffer: bytes) -> None: if not read_buffer: raise ConnectionResetError("read 0 bytes")