diff options
author | Louis-Francis Ratté-Boulianne <louis-francis.ratte-boulianne@collabora.co.uk> | 2010-11-09 16:24:10 -0500 |
---|---|---|
committer | Louis-Francis Ratté-Boulianne <louis-francis.ratte-boulianne@collabora.co.uk> | 2010-12-03 15:50:39 -0500 |
commit | d5f8ed4a22ab5e25ab408e59d770b4872ab9e9c4 (patch) | |
tree | 212c4f9167a5129654e799b13b8a478b904aba6e | |
parent | 3b08436fdc8b1aff22591cbaa371fc76d9e9a306 (diff) |
bugfix: correctly clean up everything on disconnection
-rw-r--r-- | butterfly/connection.py | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/butterfly/connection.py b/butterfly/connection.py index 537109f..4922e47 100644 --- a/butterfly/connection.py +++ b/butterfly/connection.py @@ -261,6 +261,15 @@ class ButterflyConnection(telepathy.server.Connection, self.__disconnect_reason = telepathy.CONNECTION_STATUS_REASON_REQUESTED if self._msn_client.state != papyon.event.ClientState.CLOSED: self._msn_client.logout() + else: + self._disconnected() + + def _disconnected(self): + logger.info("Disconnected") + self.StatusChanged(telepathy.CONNECTION_STATUS_DISCONNECTED, + self.__disconnect_reason) + self._channel_manager.close() + self._manager.disconnected(self) def GetInterfaces(self): # The self._interfaces set is only ever touched in ButterflyConnection.__init__, @@ -395,11 +404,7 @@ class ButterflyConnection(telepathy.server.Connection, self._client.profile.presence, self._client.profile.personal_message) elif state == papyon.event.ClientState.CLOSED: - self.StatusChanged(telepathy.CONNECTION_STATUS_DISCONNECTED, - self.__disconnect_reason) - #FIXME - self._channel_manager.close() - self._advertise_disconnected() + self._disconnected() # papyon.event.ClientEventInterface def on_client_error(self, type, error): @@ -503,9 +508,6 @@ class ButterflyConnection(telepathy.server.Connection, channel = self._channel_manager.create_channel_for_props(props, signal=True, session=session) - def _advertise_disconnected(self): - self._manager.disconnected(self) - def build_proxy_infos(parameters, proxy_type='http'): server_key = proxy_type + '-proxy-server' |