From ce8bf4a367af313dbf53e4a6ff2ee04a131f7cff Mon Sep 17 00:00:00 2001 From: Nathan Fritz Date: Thu, 25 Jun 2009 06:49:58 +0000 Subject: [PATCH] made disconnect cleaner --- sleekxmpp/__init__.py | 2 -- sleekxmpp/basexmpp.py | 2 +- sleekxmpp/xmlstream/xmlstream.py | 34 +++++++++++++++++++++++--------- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/sleekxmpp/__init__.py b/sleekxmpp/__init__.py index 8436e03..8e664a7 100644 --- a/sleekxmpp/__init__.py +++ b/sleekxmpp/__init__.py @@ -150,8 +150,6 @@ class ClientXMPP(basexmpp, XMLStream): XMLStream.reconnect(self) def disconnect(self, init=True, close=False, reconnect=False): - print "** Called -- disconnected" - # raise TypeError self.event("disconnected") XMLStream.disconnect(self, reconnect) diff --git a/sleekxmpp/basexmpp.py b/sleekxmpp/basexmpp.py index 1f07491..0b819c7 100644 --- a/sleekxmpp/basexmpp.py +++ b/sleekxmpp/basexmpp.py @@ -138,7 +138,7 @@ class basexmpp(object): return self.getId() def add_handler(self, mask, pointer, disposable=False, threaded=False, filter=False): - logging.warning("Deprecated add_handler used for %s: %s." % (mask, pointer)) + #logging.warning("Deprecated add_handler used for %s: %s." % (mask, pointer)) self.registerHandler(XMLCallback('add_handler_%s' % self.getNewId(), MatchXMLMask(mask), pointer, threaded, disposable)) def getId(self): diff --git a/sleekxmpp/xmlstream/xmlstream.py b/sleekxmpp/xmlstream/xmlstream.py index e5d5f58..1c47d9a 100644 --- a/sleekxmpp/xmlstream/xmlstream.py +++ b/sleekxmpp/xmlstream/xmlstream.py @@ -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)