From 80cc5b5edbda6fe925d4bf63f51b276a3fd5c27e Mon Sep 17 00:00:00 2001 From: Rapptz Date: Sat, 11 Apr 2020 19:06:22 -0400 Subject: [PATCH] Handle connection errors during reidentify flow. --- discord/shard.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/discord/shard.py b/discord/shard.py index 31777816b..0b0373980 100644 --- a/discord/shard.py +++ b/discord/shard.py @@ -135,12 +135,16 @@ class Shard: async def reidentify(self, exc): self._cancel_task() - log.info('Got a request to %s the websocket at Shard ID %s.', exc.op, self.id) - coro = DiscordWebSocket.from_client(self._client, resume=exc.resume, shard_id=self.id, - session=self.ws.session_id, sequence=self.ws.sequence) self._dispatch('disconnect') - self.ws = await asyncio.wait_for(coro, timeout=180.0) - self.launch() + log.info('Got a request to %s the websocket at Shard ID %s.', exc.op, self.id) + try: + coro = DiscordWebSocket.from_client(self._client, resume=exc.resume, shard_id=self.id, + session=self.ws.session_id, sequence=self.ws.sequence) + self.ws = await asyncio.wait_for(coro, timeout=180.0) + except self._handled_exceptions as e: + await self._handle_disconnect(e) + else: + self.launch() async def reconnect(self): self._cancel_task()