diff --git a/src/connection.py b/src/connection.py index fafbff69..f868811d 100644 --- a/src/connection.py +++ b/src/connection.py @@ -97,7 +97,6 @@ class Connection(slixmpp.ClientXMPP): self.register_plugin('xep_0191') self.register_plugin('xep_0199') - self.set_keepalive_values() if config.get('enable_user_tune', True): self.register_plugin('xep_0118') @@ -137,11 +136,14 @@ class Connection(slixmpp.ClientXMPP): def set_keepalive_values(self, option=None, value=None): """ - Called at startup, or triggered when one of + Called after the XMPP session has been started, or triggered when one of "connection_timeout_delay" and "connection_check_interval" options - is changed. - Unload and reload the ping plugin, with the new values. + is changed. Unload and reload the ping plugin, with the new values. """ + if not self.is_connected(): + # Happens when we change the value with /set while we are not + # connected. Do nothing in that case + return ping_interval = config.get('connection_check_interval', 60) timeout_delay = config.get('connection_timeout_delay', 10) if timeout_delay <= 0: diff --git a/src/core/handlers.py b/src/core/handlers.py index 654ce376..92533d63 100644 --- a/src/core/handlers.py +++ b/src/core/handlers.py @@ -822,6 +822,8 @@ def on_disconnected(self, event): """ When we are disconnected from remote server """ + # Stop the ping plugin. It would try to send stanza on regular basis + self.xmpp.plugin['xep_0199'].disable_keepalive() roster.modified() for tab in self.get_tabs(tabs.MucTab): tab.disconnect() @@ -892,6 +894,8 @@ def on_session_start(self, event): if config.get('enable_user_nick', True): self.xmpp.plugin['xep_0172'].publish_nick(nick=self.own_nick, callback=dumb_callback) self.xmpp.plugin['xep_0115'].update_caps() + # Start the ping's plugin regular event + self.xmpp.set_keepalive_values() ### Other handlers ###