Don't allow sending to the closed server socket if we are reconnecting

This commit is contained in:
Juhani Krekelä 2019-05-11 15:32:27 +03:00
parent 13c62c8577
commit 635cab7440
1 changed files with 8 additions and 2 deletions

View File

@ -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