Handle AUTH_KEY_DUPLICATED on connection

This commit is contained in:
Lonami Exo
2018-03-30 12:18:18 +02:00
parent 2b9babb30f
commit 500792975e
4 changed files with 27 additions and 1 deletions

View File

@@ -11,7 +11,7 @@ from .crypto import rsa
from .errors import (
RPCError, BrokenAuthKeyError, ServerError, FloodWaitError,
FloodTestPhoneWaitError, TypeNotFoundError, UnauthorizedError,
PhoneMigrateError, NetworkMigrateError, UserMigrateError
PhoneMigrateError, NetworkMigrateError, UserMigrateError, AuthKeyError
)
from .network import authenticator, MtProtoSender, Connection, ConnectionMode
from .sessions import Session, SQLiteSession
@@ -227,6 +227,15 @@ class TelegramBareClient:
self.disconnect()
return self.connect(_sync_updates=_sync_updates)
except AuthKeyError as e:
# As of late March 2018 there were two AUTH_KEY_DUPLICATED
# reports. Retrying with a clean auth_key should fix this.
__log__.warning('Auth key error %s. Clearing it and retrying.', e)
self.disconnect()
self.session.auth_key = None
self.session.save()
return self.connect(_sync_updates=_sync_updates)
except (RPCError, ConnectionError) as e:
# Probably errors from the previous session, ignore them
__log__.error('Connection failed due to %s', e)