diff --git a/telethon/client/updates.py b/telethon/client/updates.py index d4098870..3f1f7043 100644 --- a/telethon/client/updates.py +++ b/telethon/client/updates.py @@ -335,6 +335,12 @@ class UpdateMethods: except Exception: continue # Any disconnected exception should be ignored + # Don't bother sending pings until the low-level connection is + # ready, otherwise a lot of pings will be batched to be sent upon + # reconnect, when we really don't care about that. + if not self._sender._transport_connected(): + continue + # We also don't really care about their result. # Just send them periodically. try: diff --git a/telethon/network/mtprotosender.py b/telethon/network/mtprotosender.py index 77c7fb30..6c935c73 100644 --- a/telethon/network/mtprotosender.py +++ b/telethon/network/mtprotosender.py @@ -128,6 +128,13 @@ class MTProtoSender: def is_connected(self): return self._user_connected + def _transport_connected(self): + return ( + not self._reconnecting + and self._connection is not None + and self._connection._connected + ) + async def disconnect(self): """ Cleanly disconnects the instance from the network, cancels