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