From 705dda8d687b9686183629c27ba0c4e5c45176c3 Mon Sep 17 00:00:00 2001
From: Tulir Asokan <tulir@maunium.net>
Date: Mon, 7 Sep 2020 20:46:42 +0300
Subject: [PATCH] Only wait 3 seconds for disconnect when refreshing

---
 mautrix_facebook/user.py | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/mautrix_facebook/user.py b/mautrix_facebook/user.py
index 6441250..e2870b5 100644
--- a/mautrix_facebook/user.py
+++ b/mautrix_facebook/user.py
@@ -257,18 +257,25 @@ class User(BaseUser):
         event_id = None
         self._is_refreshing = True
         if self.listener:
+            self.log.debug("Disconnecting MQTT connection for session refresh...")
             if self.temp_disconnect_notices or force_notice:
                 event_id = await self.send_bridge_notice("Disconnecting Messenger MQTT connection "
                                                          "for session refresh...")
             self.listener.disconnect()
             if self.listen_task:
-                await self.listen_task
+                try:
+                    await asyncio.wait_for(self.listen_task, timeout=3)
+                except asyncio.TimeoutError:
+                    self.log.debug("Waiting for MQTT connection timed out")
+                else:
+                    self.log.debug("MQTT connection disconnected")
             self.listener = None
             if self.client:
                 self.client.sequence_id_callback = None
         if self.temp_disconnect_notices or force_notice:
             event_id = await self.send_bridge_notice("Refreshing session...", edit=event_id)
         try:
+            self.log.debug("Re-loading session for refresh")
             ok = await self.load_session(_override=True, _raise_errors=True)
         except fbchat.FacebookError as e:
             await self.send_bridge_notice("Failed to refresh Messenger session: "
-- 
GitLab