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