Wrap all sock.shutdown functions in error handlers because evidently these can fail on some OSs if the socket is already shut down from earlier.

This commit is contained in:
Jonathan Warren 2013-05-16 13:10:40 -04:00
parent dfd91d35af
commit 7458b09e07

View File

@ -2051,8 +2051,11 @@ class sendDataThread(threading.Thread):
shared.printLock.acquire() shared.printLock.acquire()
print 'sendDataThread (associated with', self.HOST,') ID:',id(self), 'shutting down now.' print 'sendDataThread (associated with', self.HOST,') ID:',id(self), 'shutting down now.'
shared.printLock.release() shared.printLock.release()
try:
self.sock.shutdown(socket.SHUT_RDWR) self.sock.shutdown(socket.SHUT_RDWR)
self.sock.close() self.sock.close()
except:
pass
shared.sendDataQueues.remove(self.mailbox) shared.sendDataQueues.remove(self.mailbox)
shared.printLock.acquire() shared.printLock.acquire()
print 'len of sendDataQueues', len(shared.sendDataQueues) print 'len of sendDataQueues', len(shared.sendDataQueues)
@ -2087,8 +2090,11 @@ class sendDataThread(threading.Thread):
self.lastTimeISentData = int(time.time()) self.lastTimeISentData = int(time.time())
except: except:
print 'self.sock.sendall failed' print 'self.sock.sendall failed'
try:
self.sock.shutdown(socket.SHUT_RDWR) self.sock.shutdown(socket.SHUT_RDWR)
self.sock.close() self.sock.close()
except:
pass
shared.sendDataQueues.remove(self.mailbox) shared.sendDataQueues.remove(self.mailbox)
print 'sendDataThread thread (ID:',str(id(self))+') ending now. Was connected to', self.HOST print 'sendDataThread thread (ID:',str(id(self))+') ending now. Was connected to', self.HOST
break break
@ -2107,8 +2113,11 @@ class sendDataThread(threading.Thread):
self.lastTimeISentData = int(time.time()) self.lastTimeISentData = int(time.time())
except: except:
print 'self.sock.sendall failed' print 'self.sock.sendall failed'
try:
self.sock.shutdown(socket.SHUT_RDWR) self.sock.shutdown(socket.SHUT_RDWR)
self.sock.close() self.sock.close()
except:
pass
shared.sendDataQueues.remove(self.mailbox) shared.sendDataQueues.remove(self.mailbox)
print 'sendDataThread thread (ID:',str(id(self))+') ending now. Was connected to', self.HOST print 'sendDataThread thread (ID:',str(id(self))+') ending now. Was connected to', self.HOST
break break
@ -2123,8 +2132,11 @@ class sendDataThread(threading.Thread):
self.lastTimeISentData = int(time.time()) self.lastTimeISentData = int(time.time())
except: except:
print 'send pong failed' print 'send pong failed'
try:
self.sock.shutdown(socket.SHUT_RDWR) self.sock.shutdown(socket.SHUT_RDWR)
self.sock.close() self.sock.close()
except:
pass
shared.sendDataQueues.remove(self.mailbox) shared.sendDataQueues.remove(self.mailbox)
print 'sendDataThread thread', self, 'ending now. Was connected to', self.HOST print 'sendDataThread thread', self, 'ending now. Was connected to', self.HOST
break break