Sfoglia il codice sorgente

provisioning: raise 503 if signald is unavailable

Sumner Evans 3 anni fa
parent
commit
9ea154f30f
1 ha cambiato i file con 8 aggiunte e 3 eliminazioni
  1. 8 3
      mautrix_signal/web/provisioning_api.py

+ 8 - 3
mautrix_signal/web/provisioning_api.py

@@ -28,7 +28,7 @@ from mausignald.errors import (
     TimeoutException,
     UnregisteredUserError,
 )
-from mausignald.types import Account, Address, Profile
+from mausignald.types import Account, Address
 from mautrix.types import UserID
 from mautrix.util.logging import TraceLogger
 
@@ -122,8 +122,13 @@ class ProvisioningAPI:
                 text='{"error": "Missing user_id query param"}', headers=self._headers
             )
 
-        if not self.bridge.signal.is_connected:
-            await self.bridge.signal.wait_for_connected()
+        try:
+            if not self.bridge.signal.is_connected:
+                await self.bridge.signal.wait_for_connected(timeout=10)
+        except asyncio.TimeoutError:
+            raise web.HTTPServiceUnavailable(
+                text=json.dumps({"error": "Cannot connect to signald"}), headers=self._headers
+            )
 
         return await u.User.get_by_mxid(UserID(user_id))