Author: dkirov Date: 2006-05-03 18:12:10 +0200 (Wed, 03 May 2006) New Revision: 6274
Modified: trunk/src/common/connection.py trunk/src/common/xmpp/__init__.py trunk/src/common/xmpp/dispatcher_nb.py trunk/src/common/xmpp/transports_nb.py Log: make sure NBClientCommon, dispatcher and NodeBuilder are callected when we close the connection
Modified: trunk/src/common/connection.py =================================================================== --- trunk/src/common/connection.py 2006-05-03 15:31:08 UTC (rev 6273) +++ trunk/src/common/connection.py 2006-05-03 16:12:10 UTC (rev 6274) @@ -121,6 +121,7 @@ # make sure previous connection is completely closed gajim.proxy65_manager.disconnect(self.connection) self.connection.disconnect() + self.last_connection = None self.connection = None def _disconnectedReconnCB(self):
Modified: trunk/src/common/xmpp/__init__.py =================================================================== --- trunk/src/common/xmpp/__init__.py 2006-05-03 15:31:08 UTC (rev 6273) +++ trunk/src/common/xmpp/__init__.py 2006-05-03 16:12:10 UTC (rev 6274) @@ -26,7 +26,7 @@
"""
-import simplexml,protocol,debug,auth_nb,auth,transports,transports_nb,roster_nb,roster,dispatcher_nb,dispatcher,features_nb,features,browser,filetransfer,commands, idlequeue +import simplexml,protocol,debug,auth_nb,auth,transports,transports_nb,roster_nb,roster,dispatcher_nb,features_nb,features,browser,filetransfer,commands, idlequeue from client_nb import * from client import * from protocol import *
Modified: trunk/src/common/xmpp/dispatcher_nb.py =================================================================== --- trunk/src/common/xmpp/dispatcher_nb.py 2006-05-03 15:31:08 UTC (rev 6273) +++ trunk/src/common/xmpp/dispatcher_nb.py 2006-05-03 16:12:10 UTC (rev 6274) @@ -92,6 +92,8 @@ self.Stream.DEBUG = None self.Stream.features = None self.Stream.destroy() + self._owner = None + self.Stream = None
def StreamInit(self): ''' Send an initial stream header. ''' @@ -127,7 +129,7 @@ try: self.Stream.Parse(data) # end stream:stream tag received - if self.Stream._NodeBuilder__depth == 0: + if self.Stream and self.Stream._NodeBuilder__depth == 0: self._owner.Connection.disconnect() return 0 except ExpatError:
Modified: trunk/src/common/xmpp/transports_nb.py =================================================================== --- trunk/src/common/xmpp/transports_nb.py 2006-05-03 15:31:08 UTC (rev 6273) +++ trunk/src/common/xmpp/transports_nb.py 2006-05-03 16:12:10 UTC (rev 6274) @@ -138,15 +138,16 @@ the owner's dispatcher. ''' self.disconnect() self._owner.Connection = None + self._owner = None def pollin(self): self._do_receive() def pollend(self): + conn_failure_cb = self.on_connect_failure self.disconnect() - if self.on_connect_failure: - self.on_connect_failure() - self.on_connect_failure = None + if conn_failure_cb: + conn_failure_cb() def disconnect(self): if self.state == -2: # already disconnected @@ -166,6 +167,7 @@ self.fd = -1 if self.on_disconnect: self.on_disconnect() + self.on_connect_failure = None def end_disconnect(self): ''' force disconnect only if we are still trying to disconnect ''' @@ -215,19 +217,14 @@ if errnum == socket.SSL_ERROR_WANT_READ: pass elif errnum in [errno.ECONNRESET, errno.ENOTCONN, errno.ESHUTDOWN]: - self.disconnect() - if self.on_connect_failure: - self.on_connect_failure() + self.pollend() # don't proccess result, cas it will raise error return elif not received : if errnum != socket.SSL_ERROR_EOF: # 8 EOF occurred in violation of protocol self.DEBUG('Socket error while receiving data', 'error') - self.disconnect() - if self.on_connect_failure: - self.on_connect_failure(True) - self.on_connect_failure = None + self.pollend() if self.state >= 0: self.disconnect() return @@ -393,6 +390,8 @@ # if dispatcher is not plugged we cannot (un)register handlers if self._owner.__dict__.has_key('Dispatcher'): self._owner.UnregisterHandler('features', self.FeaturesHandler,xmlns=NS_STREAMS) + self._owner.Dispatcher.PlugOut() + self._owner = None
def tls_start(self): if self.on_tls_start: