Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2007-05-24 20:40:14 (GMT)
committer Dan Williams <dcbw@redhat.com>2007-05-24 20:40:14 (GMT)
commitc1346a530301a420eb30918f45dc18b142fa1589 (patch)
treeee98acc42231295f34de9a80a96cd406f9165e34 /services
parentcb84d5f8fd90f237c5d8a8e319a452a6d4b72e43 (diff)
Retry connections when TP connection attempts fail
Diffstat (limited to 'services')
-rw-r--r--services/presence/server_plugin.py18
1 files changed, 8 insertions, 10 deletions
diff --git a/services/presence/server_plugin.py b/services/presence/server_plugin.py
index e6fd395..f0d988c 100644
--- a/services/presence/server_plugin.py
+++ b/services/presence/server_plugin.py
@@ -58,6 +58,7 @@ _OBJ_PATH_PREFIX = "/org/freedesktop/Telepathy/Connection/gabble/jabber/"
_logger = logging.getLogger('s-p-s.server_plugin')
+_RECONNECT_TIMEOUT = 5000
def _buddy_icon_save_cb(buf, data):
data[0] += buf
@@ -349,6 +350,9 @@ class ServerPlugin(gobject.GObject):
_logger.debug('Connect() succeeded')
def connect_error(e):
_logger.debug('Connect() failed: %s', e)
+ if not self._reconnect_id:
+ self._reconnect_id = gobject.timeout_add(_RECONNECT_TIMEOUT,
+ self._reconnect_cb)
self._conn[CONN_INTERFACE].Connect(reply_handler=connect_reply,
error_handler=connect_error)
@@ -648,15 +652,9 @@ class ServerPlugin(gobject.GObject):
return handle
return None
- def _start_helper(self):
- """Helper so start() doesn't have to return False"""
- self.start()
- return False
-
def _reconnect_cb(self):
- """Schedule a reconnection attempt"""
- gobject.idle_add(self._start_helper)
- self._reconnect_id = 0
+ """Attempt to reconnect to the server"""
+ self.start()
return False
def _handle_connection_status_change(self, status, reason):
@@ -684,8 +682,8 @@ class ServerPlugin(gobject.GObject):
# If disconnected and no network connection, do nothing here
# and let the IP4AddressMonitor address-changed signal handle
# reconnection
- if self._ip4am.props.address:
- self._reconnect_id = gobject.timeout_add(5000,
+ if self._ip4am.props.address and not self._reconnect_id:
+ self._reconnect_id = gobject.timeout_add(_RECONNECT_TIMEOUT,
self._reconnect_cb)
self.emit('status', self._conn_status, int(reason))