From 763372390fa578e8708a7c808aad1c867874303a 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 | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/telethon/telegram_client.py b/telethon/telegram_client.py index bae29e49..4fdcfbfa 100644 --- a/telethon/telegram_client.py +++ b/telethon/telegram_client.py @@ -1,3 +1,4 @@ +import errno from datetime import timedelta from mimetypes import guess_type from threading import Event, RLock, Thread @@ -315,22 +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 (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)."""