Reset TelegramClient completely on AuthKeyDuplicatedError

This commit is contained in:
Tulir Asokan
2021-08-16 20:54:02 +03:00
parent 3ab5e4d8cc
commit 13cac8db9a
2 changed files with 11 additions and 5 deletions
+4 -4
View File
@@ -129,9 +129,9 @@ class AbstractUser(ABC):
def _init_client(self) -> None: def _init_client(self) -> None:
self.log.debug(f"Initializing client for {self.name}") self.log.debug(f"Initializing client for {self.name}")
self.session = self.session_container.new_session(self.name) session = self.session_container.new_session(self.name)
if config["telegram.server.enabled"]: if config["telegram.server.enabled"]:
self.session.set_dc(config["telegram.server.dc"], session.set_dc(config["telegram.server.dc"],
config["telegram.server.ip"], config["telegram.server.ip"],
config["telegram.server.port"]) config["telegram.server.port"])
@@ -145,10 +145,10 @@ class AbstractUser(ABC):
appversion = config["telegram.device_info.app_version"] appversion = config["telegram.device_info.app_version"]
connection, proxy = self._proxy_settings connection, proxy = self._proxy_settings
assert isinstance(self.session, Session) assert isinstance(session, Session)
self.client = MautrixTelegramClient( self.client = MautrixTelegramClient(
session=self.session, session=session,
api_id=config["telegram.api_id"], api_id=config["telegram.api_id"],
api_hash=config["telegram.api_hash"], api_hash=config["telegram.api_hash"],
+7 -1
View File
@@ -210,7 +210,13 @@ class User(AbstractUser, BaseUser):
self.log.warning("Got AuthKeyDuplicatedError in start()") self.log.warning("Got AuthKeyDuplicatedError in start()")
await self.push_bridge_state(BridgeStateEvent.BAD_CREDENTIALS, await self.push_bridge_state(BridgeStateEvent.BAD_CREDENTIALS,
error="tg-auth-key-duplicated") error="tg-auth-key-duplicated")
# Don't return, let the session be deleted if delete_unless_authenticated is true await self.client.disconnect()
self.client.session.delete()
self.client = None
if not delete_unless_authenticated:
# The caller wants the client to be connected, so restart the connection.
await super().start()
return self
except Exception: except Exception:
await self.push_bridge_state(BridgeStateEvent.UNKNOWN_ERROR) await self.push_bridge_state(BridgeStateEvent.UNKNOWN_ERROR)
raise raise