1
0
Fork 0

Improve server socket problem detection

This commit is contained in:
Némunaire 2012-12-21 11:29:29 +01:00
parent 3ba52cf1a0
commit 856feab62d
2 changed files with 18 additions and 9 deletions

View File

@ -192,14 +192,17 @@ class IRCServer(server.Server):
readbuffer = b'' #Here we store all the messages from server
while not self.stop:
readbuffer = readbuffer + raw
temp = readbuffer.split(b'\n')
readbuffer = temp.pop()
try:
while not self.stop:
readbuffer = readbuffer + raw
temp = readbuffer.split(b'\n')
readbuffer = temp.pop()
for line in temp:
self.treat_msg(line)
raw = self.s.recv(1024) #recieve server messages
for line in temp:
self.treat_msg(line)
raw = self.s.recv(1024) #recieve server messages
except socket.error:
pass
if self.connected:
self.s.close()

View File

@ -126,7 +126,10 @@ class Server(threading.Thread):
"""Close the socket with the server"""
if self.connected:
self.stop = True
self.s.shutdown(socket.SHUT_RDWR)
try:
self.s.shutdown(socket.SHUT_RDWR)
except socket.error:
pass
self.stopping.wait()
return True
@ -139,7 +142,10 @@ class Server(threading.Thread):
self.stop = True
self.connected = False
#Send a message in order to close the socket
self.s.send(("Bye!\r\n" % self.nick).encode ())
try:
self.s.send(("Bye!\r\n" % self.nick).encode ())
except:
pass
self.stopping.wait()
return True
else: