Updating TOR to use latest GV bindings from Dialcentral, particularly a bug fix is...
[theonering] / src / connection.py
index 30350ed..a5dec2e 100644 (file)
@@ -24,7 +24,7 @@ import autogv
 import channel_manager
 
 
-_moduleLogger = logging.getLogger("connection")
+_moduleLogger = logging.getLogger(__name__)
 
 
 class TheOneRingOptions(object):
@@ -142,6 +142,8 @@ class TheOneRingConnection(
                self._delayedConnect = gobject_utils.Async(self._delayed_connect)
 
                _moduleLogger.info("Connection to the account %s created" % account)
+               self._timedDisconnect = autogv.TimedDisconnect(weakref.ref(self))
+               self._timedDisconnect.start()
 
        @property
        def manager(self):
@@ -166,11 +168,9 @@ class TheOneRingConnection(
        def get_handle_by_name(self, handleType, handleName):
                requestedHandleName = handleName.encode('utf-8')
                if handleType == telepathy.HANDLE_TYPE_CONTACT:
-                       _moduleLogger.debug("get_handle_by_name Contact: %s" % requestedHandleName)
                        h = handle.create_handle(self, 'contact', requestedHandleName)
                elif handleType == telepathy.HANDLE_TYPE_LIST:
                        # Support only server side (immutable) lists
-                       _moduleLogger.debug("get_handle_by_name List: %s" % requestedHandleName)
                        h = handle.create_handle(self, 'list', requestedHandleName)
                else:
                        raise telepathy.errors.NotAvailable('Handle type unsupported %d' % handleType)
@@ -190,6 +190,7 @@ class TheOneRingConnection(
                        return
                _moduleLogger.info("Kicking off connect")
                self._delayedConnect.start()
+               self._timedDisconnect.stop()
 
        @misc_utils.log_exception(_moduleLogger)
        def _delayed_connect(self):
@@ -217,11 +218,11 @@ class TheOneRingConnection(
                        publishHandle = self.get_handle_by_name(telepathy.HANDLE_TYPE_LIST, "publish")
                        publishProps = self.generate_props(telepathy.CHANNEL_TYPE_CONTACT_LIST, publishHandle, False)
                        self.__channelManager.channel_for_props(publishProps, signal=True)
-               except gvoice.backend.NetworkError, e:
+               except gvoice.backend.NetworkError:
                        _moduleLogger.exception("Connection Failed")
                        self.disconnect(telepathy.CONNECTION_STATUS_REASON_NETWORK_ERROR)
                        return
-               except Exception, e:
+               except Exception:
                        _moduleLogger.exception("Connection Failed")
                        self.disconnect(telepathy.CONNECTION_STATUS_REASON_AUTHENTICATION_FAILED)
                        return
@@ -238,7 +239,7 @@ class TheOneRingConnection(
                For org.freedesktop.telepathy.Connection
                """
                _moduleLogger.info("Kicking off disconnect")
-               self._delayed_disconnect()
+               self.disconnect(telepathy.CONNECTION_STATUS_REASON_REQUESTED)
 
        @misc_utils.log_exception(_moduleLogger)
        def RequestChannel(self, type, handleType, handleId, suppressHandler):
@@ -277,15 +278,11 @@ class TheOneRingConnection(
 
                return props
 
-       @gobject_utils.async
-       def _delayed_disconnect(self):
-               self.disconnect(telepathy.CONNECTION_STATUS_REASON_REQUESTED)
-               return False
-
        def disconnect(self, reason):
                _moduleLogger.info("Disconnecting")
 
                self._delayedConnect.cancel()
+               self._timedDisconnect.stop()
 
                # Not having the disconnect first can cause weird behavior with clients
                # including not being able to reconnect or even crashing
@@ -298,9 +295,10 @@ class TheOneRingConnection(
                        plumber.stop()
 
                self.__channelManager.close()
+               self.manager.disconnected(self)
+
                self.session.save(self.__cachePath)
                self.session.logout()
                self.session.close()
 
-               self.manager.disconnected(self)
                _moduleLogger.info("Disconnected")