From 20a10dfdc343c67092ff1ab172ad50bba7ad85c9 Mon Sep 17 00:00:00 2001 From: Tural Gurbanov Date: Fri, 18 Aug 2017 14:22:27 +0100 Subject: [PATCH] Fixing log_out problems on mac os devices --- telethon/telegram_client.py | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/telethon/telegram_client.py b/telethon/telegram_client.py index c8bcf45a..4fdcfbfa 100644 --- a/telethon/telegram_client.py +++ b/telethon/telegram_client.py @@ -316,33 +316,27 @@ class TelegramClient(TelegramBareClient): def log_out(self): """Logs out and deletes the current session. Returns True if everything went okay.""" - # Special flag when logging out (so the ack request confirms it) self._sender.logging_out = True + try: self(LogOutRequest()) self.disconnect() - if not self.session.delete(): - return False - - self.session = None - return True except OSError as e: # macos issue: https://github.com/veusz/veusz/issues/54 - # socket has been already closed - if e.errno == errno.ENOTCONN: - if not self.session.delete(): - return False - - self.session = None - return True - else: + # socket has been already closed (Errno 57) + # if any other - fail + if e.errno != errno.ENOTCONN: raise e except (RPCError, ConnectionError): # Something happened when logging out, restore the state back self._sender.logging_out = False return False + self.session.delete() + self.session = None + return True + def get_me(self): """Gets "me" (the self user) which is currently authenticated, or None if the request fails (hence, not authenticated)."""