From c49f0827b11a473ba77a71d9587ab476b7e9e2e6 Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Wed, 18 Oct 2023 20:35:55 +0200 Subject: [PATCH] Don't send requests until there are salts This way we don't waste resources sending containers that may fail. --- client/src/telethon/_impl/mtproto/mtp/encrypted.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/client/src/telethon/_impl/mtproto/mtp/encrypted.py b/client/src/telethon/_impl/mtproto/mtp/encrypted.py index 5cc923f4..6affa1ec 100644 --- a/client/src/telethon/_impl/mtproto/mtp/encrypted.py +++ b/client/src/telethon/_impl/mtproto/mtp/encrypted.py @@ -422,10 +422,6 @@ class Encrypted(Mtp): ) def push(self, request: bytes) -> Optional[MsgId]: - if self._in_pending_ack: - self._serialize_msg(bytes(MsgsAck(msg_ids=self._in_pending_ack)), False) - self._in_pending_ack = [] - if self._start_salt_time and len(self._salts) >= 2: start_secs, start_instant = self._start_salt_time salt = self._salts[-2] @@ -434,6 +430,13 @@ class Encrypted(Mtp): self._salts.pop() self._try_request_salts() + if self._salt_request_msg_id: + # Don't add anything else to the container while we still need new salts. + return None + + if self._in_pending_ack: + self._serialize_msg(bytes(MsgsAck(msg_ids=self._in_pending_ack)), False) + self._in_pending_ack = [] if self._msg_count >= CONTAINER_MAX_LENGTH: return None