About Social Code
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/relay/network.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/relay/network.py b/src/relay/network.py
index 18d2920..df5dc92 100644
--- a/src/relay/network.py
+++ b/src/relay/network.py
@@ -191,6 +191,9 @@ class Network(GObject.GObject):
return cmd % {'lines': self._lines}
def handshake_timer_expired(self):
+ # Timer has expired make sure to set timer to none now
+ self._handshake_timer = None
+
if self.status == STATUS_AUTHENTICATING:
self._pwd_hash_algo = 'plain' # nosec
self.send_to_weechat(self._build_init_command())
@@ -206,12 +209,19 @@ class Network(GObject.GObject):
def keep_alive(self):
if self.is_connected():
- self.send_to_weechat("ping keep_alive\n")
- GLib.timeout_add(30*1000, self.keep_alive)
+ if self.send_to_weechat("ping keep_alive\n"):
+ GLib.timeout_add(30*1000, self.keep_alive)
return False
def _socket_read(self, source_object, res, *user_data):
"""Slot: data available on socket."""
+
+ # We might have disconnected from the keep alive timer
+ # so make sure we disconnect if the connection is
+ # already closed
+ if self.status == STATUS_DISCONNECTED:
+ return
+
try:
gbytes = self.input.read_bytes_finish(res)
except GLib.GError as err:
@@ -360,6 +370,9 @@ class Network(GObject.GObject):
output.write(message.encode("utf-8"))
except GLib.Error as err:
self.handle_network_error(err)
+ return False
+
+ return True
def init_with_handshake(self, response):
"""Initialize with WeeChat using the handshake response."""