diff options
-rw-r--r-- | src/relay/network.py | 17 |
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.""" |