Don't allow sending to the closed server socket if we are reconnecting
This commit is contained in:
parent
13c62c8577
commit
635cab7440
10
ircbot.py
10
ircbot.py
|
@ -183,7 +183,10 @@ class ServerThread(threading.Thread):
|
||||||
time.sleep(wait)
|
time.sleep(wait)
|
||||||
|
|
||||||
with self.server_socket_write_lock:
|
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
|
# Don't log PINGs or PONGs
|
||||||
if not (len(line) >= 5 and (line[:5] == b'PING ' or line[:5] == b'PONG ')):
|
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
|
# Tell the server we're quiting
|
||||||
self.send_line_raw(b'QUIT :%s exiting normally' % self.server.username.encode('utf-8'))
|
self.send_line_raw(b'QUIT :%s exiting normally' % self.server.username.encode('utf-8'))
|
||||||
|
|
||||||
self.server_socket.close()
|
self.server_socket.close()
|
||||||
|
|
||||||
break
|
break
|
||||||
|
@ -358,7 +362,9 @@ class ServerThread(threading.Thread):
|
||||||
else:
|
else:
|
||||||
# Tell server we're reconnecting
|
# Tell server we're reconnecting
|
||||||
self.send_line_raw(b'QUIT :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:
|
except (BrokenPipeError, TimeoutError) as err:
|
||||||
# Connection broke, log it and try to reconnect
|
# Connection broke, log it and try to reconnect
|
||||||
|
|
Loading…
Reference in New Issue