summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLouis-Francis Ratté-Boulianne <louis-francis.ratte-boulianne@collabora.co.uk>2010-11-09 16:24:10 -0500
committerLouis-Francis Ratté-Boulianne <louis-francis.ratte-boulianne@collabora.co.uk>2010-12-03 15:50:39 -0500
commitd5f8ed4a22ab5e25ab408e59d770b4872ab9e9c4 (patch)
tree212c4f9167a5129654e799b13b8a478b904aba6e
parent3b08436fdc8b1aff22591cbaa371fc76d9e9a306 (diff)
bugfix: correctly clean up everything on disconnection
-rw-r--r--butterfly/connection.py18
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'