From 5a9a00e7ae968104c26eee501f9ec966c11ce617 Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Sat, 21 Jul 2018 11:24:20 +0200 Subject: [PATCH] Assume exported auths last forever This implies that export senders will NOT be deleted from memory once all borrows are returned, thus their auth_key remains as well. When borrowing them if they existed they will be connect()ed if it's the first borrow. This probably fixes #901. --- telethon/client/telegrambaseclient.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/telethon/client/telegrambaseclient.py b/telethon/client/telegrambaseclient.py index 700054f4..8f9854a5 100644 --- a/telethon/client/telegrambaseclient.py +++ b/telethon/client/telegrambaseclient.py @@ -433,6 +433,9 @@ class TelegramBaseClient(abc.ABC): if not sender: sender = await self._create_exported_sender(dc_id) sender.dc_id = dc_id + elif not n: + dc = await self._get_dc(dc_id) + await sender.connect(dc.ip_address, dc.port) self._borrowed_senders[dc_id] = (n + 1, sender) @@ -447,12 +450,10 @@ class TelegramBaseClient(abc.ABC): dc_id = sender.dc_id n, _ = self._borrowed_senders[dc_id] n -= 1 - if n > 0: - self._borrowed_senders[dc_id] = (n, sender) - else: + self._borrowed_senders[dc_id] = (n, sender) + if not n: __log__.info('Disconnecting borrowed sender for DC %d', dc_id) await sender.disconnect() - del self._borrowed_senders[dc_id] async def _get_cdn_client(self, cdn_redirect): """Similar to ._borrow_exported_client, but for CDNs"""