mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-01-25 00:34:19 +03:00
Unconditionally disconnect exported senders on user disconnect
Borrowed senders are not disconnected immediately, but after a while. If a borrow was used recently but the user requested the main client to disconnect, those borrows "shouldn't" disconnect because they were used recently. However, if the user requests a disconnect, they mean that EVERYTHING should be disconnected, even if the borrows are recent. This actually gets rid of warnings about send/recv tasks being destroyed, which partially addresses #1634. That issue may still have more causes though.
This commit is contained in:
parent
44aca29057
commit
1cd11391c4
|
@ -611,10 +611,16 @@ class TelegramBaseClient(abc.ABC):
|
|||
# Also clean-up all exported senders because we're done with them
|
||||
async with self._borrow_sender_lock:
|
||||
for state, sender in self._borrowed_senders.values():
|
||||
if state.should_disconnect():
|
||||
# disconnect should never raise
|
||||
await sender.disconnect()
|
||||
# Note that we're not checking for `state.should_disconnect()`.
|
||||
# If the user wants to disconnect the client, ALL connections
|
||||
# to Telegram (including exported senders) should be closed.
|
||||
#
|
||||
# Disconnect should never raise, so there's no try/except.
|
||||
await sender.disconnect()
|
||||
# Can't use `mark_disconnected` because it may be borrowed.
|
||||
state._connected = False
|
||||
|
||||
# If any was borrowed
|
||||
self._borrowed_senders.clear()
|
||||
|
||||
# trio's nurseries would handle this for us, but this is asyncio.
|
||||
|
|
Loading…
Reference in New Issue
Block a user