Philipp Hörist pushed to branch master at gajim / gajim


Commits:
d558d99c by Philipp Hörist at 2022-10-01T17:00:52+02:00
new: Allow passing a timeout to as_task decorator

- - - - -
d4736d92 by Philipp Hörist at 2022-10-01T17:05:49+02:00
imprv: StartChat: Add timeout when requesting MUC disco info

- - - - -


2 changed files:

- gajim/common/modules/util.py
- gajim/gtk/start_chat.py


Changes:

=====================================
gajim/common/modules/util.py
=====================================
@@ -111,8 +111,15 @@ def process(self, msg: str, kwargs: Any) -> tuple[str, 
Any]:
 
 def as_task(func):
     @wraps(func)
-    def func_wrapper(self, *args, callback=None, user_data=None, **kwargs):
+    def func_wrapper(self,
+                     *args,
+                     timeout=None,
+                     callback=None,
+                     user_data=None,
+                     **kwargs):
+
         task_ = Task(func(self, *args, **kwargs))
+        task_.set_timeout(timeout)
         app.register_task(self, task_)
         task_.set_finalize_func(app.remove_task, id(self))
         task_.set_user_data(user_data)


=====================================
gajim/gtk/start_chat.py
=====================================
@@ -433,13 +433,14 @@ def _disco_muc(self, account: str, jid: JID, 
request_vcard: bool) -> None:
             jid,
             request_vcard=request_vcard,
             allow_redirect=True,
+            timeout=10,
             callback=self._muc_disco_info_received,
             user_data=account)
 
     def _muc_disco_info_received(self, task: Task) -> None:
         try:
             result = cast(DiscoInfo, task.finish())
-        except StanzaError as error:
+        except (StanzaError, TimeoutStanzaError) as error:
             self._set_error(error)
             return
 
@@ -455,12 +456,15 @@ def _muc_disco_info_received(self, task: Task) -> None:
         else:
             self._set_error_from_code('not-muc-service')
 
-    def _set_error(self, error: StanzaError) -> None:
-        text = MUC_DISCO_ERRORS.get(error.condition, to_user_string(error))
-        if error.condition == 'gone':
-            reason = error.get_text(get_rfc5646_lang())
-            if reason:
-                text = f'{text}:\n{reason}'
+    def _set_error(self, error: Union[StanzaError, TimeoutStanzaError]) -> 
None:
+        if isinstance(error, TimeoutStanzaError):
+            text = _('This address is not reachable.')
+        else:
+            text = MUC_DISCO_ERRORS.get(error.condition, to_user_string(error))
+            if error.condition == 'gone':
+                reason = error.get_text(get_rfc5646_lang())
+                if reason:
+                    text = f'{text}:\n{reason}'
         self._show_error_page(text)
 
     def _set_error_from_code(self, error_code: str) -> None:



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/compare/327eca05543f97429205d7713da160b223eaccfc...d4736d9204c7694ba824f111e6731b87ac6795ff

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/compare/327eca05543f97429205d7713da160b223eaccfc...d4736d9204c7694ba824f111e6731b87ac6795ff
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list
Commits@gajim.org
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to