diff options
Diffstat (limited to 'src')
| -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.""" |