diff --git a/gajim/common/client.py b/gajim/common/client.py index 619f29358d7cfdb1d7dabeff6b9eff537ba2fefd..3a4f900e11c8c7e26391fc5a241d0376eea34db2 100644 --- a/gajim/common/client.py +++ b/gajim/common/client.py @@ -157,38 +157,16 @@ def _create_client(self): self._client.set_username(self._user) self._client.set_resource(get_resource(self._account)) - custom_host = get_custom_host(self._account) - if custom_host is not None: - self._client.set_custom_host(*custom_host) - pass_saved = app.settings.get_account_setting(self._account, 'savepass') if pass_saved: # Request password from keyring only if the user chose to save # his password self.password = passwords.get_password(self._account) - gssapi = app.settings.get_account_setting(self._account, - 'enable_gssapi') - if gssapi: - self._client.set_mechs(['GSSAPI']) - - anonymous = app.settings.get_account_setting(self._account, - 'anonymous_auth') - if anonymous: - self._client.set_mechs(['ANONYMOUS']) - self._client.set_password(self.password) self._client.set_accepted_certificates( app.cert_store.get_certificates()) - if app.settings.get_account_setting(self._account, - 'use_plain_connection'): - self._client.set_connection_types([ConnectionType.PLAIN]) - - proxy = get_user_proxy(self._account) - if proxy is not None: - self._client.set_proxy(proxy) - self._client.subscribe('resume-failed', self._on_resume_failed) self._client.subscribe('resume-successful', self._on_resume_successful) self._client.subscribe('disconnected', self._on_disconnected) @@ -277,7 +255,7 @@ def _on_disconnected(self, _client, _signal_name): def _on_password(password): self.password = password self._client.set_password(password) - self.connect() + self._prepare_for_connect() app.nec.push_incoming_event(NetworkEvent( 'password-required', conn=self, on_password=_on_password)) @@ -372,7 +350,7 @@ def change_status(self, show, message): if show == 'offline': return - self.connect() + self._prepare_for_connect() return if self._state.is_connecting: @@ -387,7 +365,7 @@ def change_status(self, show, message): self._destroy_client = True self._abort_reconnect() else: - self.connect() + self._prepare_for_connect() return # We are connected @@ -522,6 +500,31 @@ def send_messages(self, jids, message): message.stanza = stanza self._send_message(message) + def _prepare_for_connect(self): + custom_host = get_custom_host(self._account) + if custom_host is not None: + self._client.set_custom_host(*custom_host) + + gssapi = app.settings.get_account_setting(self._account, + 'enable_gssapi') + if gssapi: + self._client.set_mechs(['GSSAPI']) + + anonymous = app.settings.get_account_setting(self._account, + 'anonymous_auth') + if anonymous: + self._client.set_mechs(['ANONYMOUS']) + + if app.settings.get_account_setting(self._account, + 'use_plain_connection'): + self._client.set_connection_types([ConnectionType.PLAIN]) + + proxy = get_user_proxy(self._account) + if proxy is not None: + self._client.set_proxy(proxy) + + self.connect() + def connect(self, ignored_tls_errors=None): if self._state not in (ClientState.DISCONNECTED, ClientState.RECONNECT_SCHEDULED): @@ -550,7 +553,7 @@ def _schedule_reconnect(self): self._set_state(ClientState.RECONNECT_SCHEDULED) log.info("Reconnect to %s in 3s", self._account) self._reconnect_timer_source = GLib.timeout_add_seconds( - 3, self.connect) + 3, self._prepare_for_connect) def _abort_reconnect(self): self._set_state(ClientState.DISCONNECTED)