Handle connection errors (like timeout)
This commit is contained in:
parent
eba4a07ed1
commit
9b9c02fe29
@ -123,6 +123,9 @@ class MessageConsumer:
|
||||
if hasattr(self.srv, "_on_connect"):
|
||||
self.srv._on_connect()
|
||||
|
||||
elif msg.cmd == "ERROR":
|
||||
self.srv.close()
|
||||
|
||||
elif msg.cmd == "PING":
|
||||
self.srv.write("%s :%s" % ("PONG", msg.params[0]))
|
||||
|
||||
|
@ -69,5 +69,5 @@ class IRCServer(SocketServer):
|
||||
|
||||
|
||||
def _close(self):
|
||||
self.write("QUIT")
|
||||
SocketServer._close(self)
|
||||
if self.socket is not None: self.write("QUIT")
|
||||
return SocketServer._close(self)
|
||||
|
@ -59,17 +59,23 @@ class SocketServer(AbstractServer):
|
||||
def _close(self):
|
||||
self._sending_queue.join()
|
||||
if self.socket is not None:
|
||||
self.socket.shutdown(socket.SHUT_RDWR)
|
||||
self.socket.close()
|
||||
try:
|
||||
self.socket.shutdown(socket.SHUT_RDWR)
|
||||
self.socket.close()
|
||||
except socket.error:
|
||||
pass
|
||||
self.socket = None
|
||||
return True
|
||||
|
||||
def _write(self, cnt):
|
||||
if self.socket is None: return
|
||||
self.socket.send(cnt)
|
||||
|
||||
def format(self, txt):
|
||||
return txt.encode() + b'\r\n'
|
||||
|
||||
def read(self):
|
||||
if self.socket is None: return
|
||||
raw = self.socket.recv(1024)
|
||||
temp = (self.readbuffer + raw).split(b'\r\n')
|
||||
self.readbuffer = temp.pop()
|
||||
|
Loading…
Reference in New Issue
Block a user