use sock.shutdown() before sock.close()

This commit is contained in:
Jonathan Warren 2013-04-29 13:46:09 -04:00
parent 5c4669b39e
commit 57f602a373

View File

@ -92,6 +92,8 @@ class outgoingSynSender(QThread):
alreadyAttemptedConnectionsListLock.release() alreadyAttemptedConnectionsListLock.release()
PORT, timeNodeLastSeen = knownNodes[self.streamNumber][HOST] PORT, timeNodeLastSeen = knownNodes[self.streamNumber][HOST]
sock = socks.socksocket(socket.AF_INET, socket.SOCK_STREAM) sock = socks.socksocket(socket.AF_INET, socket.SOCK_STREAM)
#This option apparently avoids the TIME_WAIT state so that we can rebind faster
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.settimeout(20) sock.settimeout(20)
if config.get('bitmessagesettings', 'socksproxytype') == 'none' and verbose >= 2: if config.get('bitmessagesettings', 'socksproxytype') == 'none' and verbose >= 2:
printLock.acquire() printLock.acquire()
@ -283,7 +285,7 @@ class receiveDataThread(QThread):
try: try:
self.sock.shutdown(socket.SHUT_RDWR) #self.sock.shutdown(socket.SHUT_RDWR)
self.sock.close() self.sock.close()
except Exception, err: except Exception, err:
print 'Within receiveDataThread run(), self.sock.shutdown or .close() failed.', err print 'Within receiveDataThread run(), self.sock.shutdown or .close() failed.', err
@ -2014,10 +2016,13 @@ class sendDataThread(QThread):
if command == 'shutdown': if command == 'shutdown':
if data == self.HOST or data == 'all': if data == self.HOST or data == 'all':
printLock.acquire() printLock.acquire()
print 'sendDataThread thread (associated with', self.HOST,') ID:',id(self), 'shutting down now.' print 'sendDataThread (associated with', self.HOST,') ID:',id(self), 'shutting down now.'
printLock.release()
self.sock.shutdown(socket.SHUT_RDWR) self.sock.shutdown(socket.SHUT_RDWR)
self.sock.close() self.sock.close()
print 'sendDataThread closed socket.'
sendDataQueues.remove(self.mailbox) sendDataQueues.remove(self.mailbox)
printLock.acquire()
print 'len of sendDataQueues', len(sendDataQueues) print 'len of sendDataQueues', len(sendDataQueues)
printLock.release() printLock.release()
break break
@ -5124,9 +5129,13 @@ class MyForm(QtGui.QMainWindow):
knownNodesLock.acquire() knownNodesLock.acquire()
self.statusBar().showMessage('Saving the knownNodes list of peers to disk...') self.statusBar().showMessage('Saving the knownNodes list of peers to disk...')
output = open(appdata + 'knownnodes.dat', 'wb') output = open(appdata + 'knownnodes.dat', 'wb')
print 'finished opening knownnodes.dat. Now pickle.dump'
pickle.dump(knownNodes, output) pickle.dump(knownNodes, output)
print 'done with pickle.dump. closing output'
output.close() output.close()
knownNodesLock.release() knownNodesLock.release()
print 'done closing knownnodes.dat output file.'
self.statusBar().showMessage('Done saving the knownNodes list of peers to disk.')
broadcastToSendDataQueues((0, 'shutdown', 'all')) broadcastToSendDataQueues((0, 'shutdown', 'all'))