made disconnect cleaner

This commit is contained in:
Nathan Fritz
2009-06-25 06:49:58 +00:00
parent 94f58ec3cb
commit ce8bf4a367
3 changed files with 26 additions and 12 deletions

View File

@@ -196,13 +196,25 @@ class XMLStream(object):
self.state.set('processing', False)
self.state.set('reconnect', False)
self.disconnect()
raise
return
except CloseStream:
break
return
except SystemExit:
return
except socket.EBADF:
if not self.state.reconnect:
return
else:
self.state.set('processing', False)
traceback.print_exc()
self.disconnect(reconnect=True)
except:
self.state.set('processing', False)
traceback.print_exc()
self.disconnect(reconnect=True)
if not self.state.reconnect:
return
else:
self.state.set('processing', False)
traceback.print_exc()
self.disconnect(reconnect=True)
if self.state['reconnect']:
self.reconnect()
self.state.set('processing', False)
@@ -247,9 +259,10 @@ class XMLStream(object):
try:
self.socket.send(data)
except socket.error,(errno, strerror):
logging.error("Disconnected. Socket Error #%s: %s" % (errno,strerror))
self.state.set('connected', False)
self.disconnect(reconnect=True)
if self.state.reconnect:
logging.error("Disconnected. Socket Error #%s: %s" % (errno,strerror))
self.disconnect(reconnect=True)
return False
return True
@@ -264,9 +277,12 @@ class XMLStream(object):
self.filesocket.close()
self.socket.shutdown(socket.SHUT_RDWR)
except socket.error,(errno,strerror):
logging.warning("Error while disconnecting. Socket Error #%s: %s" % (errno, strerror))
#logging.warning("Error while disconnecting. Socket Error #%s: %s" % (errno, strerror))
#thread.exit_thread()
pass
if self.state['processing']:
raise CloseStream
#raise CloseStream
pass
def reconnect(self):
self.state.set('tls',False)