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
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits