From 635cab74408064e71699136c929833b000ab8453 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juhani=20Krekel=C3=A4?= Date: Sat, 11 May 2019 15:32:27 +0300 Subject: [PATCH] Don't allow sending to the closed server socket if we are reconnecting --- ircbot.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ircbot.py b/ircbot.py index 5af87fb..a5ab9dd 100644 --- a/ircbot.py +++ b/ircbot.py @@ -183,7 +183,10 @@ class ServerThread(threading.Thread): time.sleep(wait) with self.server_socket_write_lock: - self.server_socket.sendall(line + b'\r\n') + if self.server_socket is not None: + self.server_socket.sendall(line + b'\r\n') + else: + return # Don't log PINGs or PONGs if not (len(line) >= 5 and (line[:5] == b'PING ' or line[:5] == b'PONG ')): @@ -351,6 +354,7 @@ class ServerThread(threading.Thread): # Tell the server we're quiting self.send_line_raw(b'QUIT :%s exiting normally' % self.server.username.encode('utf-8')) + self.server_socket.close() break @@ -358,7 +362,9 @@ class ServerThread(threading.Thread): else: # Tell server we're reconnecting self.send_line_raw(b'QUIT :Reconnecting') - self.server_socket.close() + with self.server_socket_write_lock: + self.server_socket.close() + self.server_socket = None except (BrokenPipeError, TimeoutError) as err: # Connection broke, log it and try to reconnect