Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorgan Collett <morgan.collett@gmail.com>2007-11-22 13:08:56 (GMT)
committer Morgan Collett <morgan.collett@gmail.com>2007-12-18 14:43:13 (GMT)
commitabfffb6e5d2fb108878a8bc8f3702dcd868e5d2d (patch)
tree50ff2fcce5d7d842d3b0570903048baad8c24f9e
parentf048d86a95972201e80bec11d6873c5730b5a20a (diff)
#4920: Harden _add_buddies to cope with no handle when calling BuddyHandleJoined
-rw-r--r--NEWS3
-rw-r--r--src/activity.py17
2 files changed, 16 insertions, 4 deletions
diff --git a/NEWS b/NEWS
index 1d46159..f05f556 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,6 @@
+* #4920: Harden _add_buddies to cope with no handle when calling
+ BuddyHandleJoined (morgs)
+
Snapshot 4c8e8b71b5
* #4896: Make subscribe/presence channel tracking not dependent on which order
diff --git a/src/activity.py b/src/activity.py
index a7052f2..1401699 100644
--- a/src/activity.py
+++ b/src/activity.py
@@ -357,7 +357,7 @@ class Activity(ExportedGObject):
handle -- buddy handle in this activity
"""
_logger.debug('BuddyHandleJoined: %s (handle %u)',
- (buddy_path, handle))
+ buddy_path, handle)
self.BuddyJoined(buddy_path)
@dbus.service.signal(_ACTIVITY_INTERFACE,
@@ -713,9 +713,18 @@ class Activity(ExportedGObject):
if self._valid:
op = buddy.object_path()
handle = self._buddy_to_handle.get(buddy)
- _logger.debug('%r: emitting BuddyHandleJoined(%r, %u)',
- self, op, handle)
- self.BuddyHandleJoined(op, handle)
+ # XXX #4920: In rare circumstances the handle is None so
+ # fall back to BuddyJoined.
+ # FIXME: After Update.1 we need to rework buddy handle
+ # tracking and design it better.
+ if handle is not None:
+ _logger.debug('%r: emitting BuddyHandleJoined(%r, %u)',
+ self, op, handle)
+ self.BuddyHandleJoined(op, handle)
+ else:
+ _logger.debug('%r: emitting BuddyJoined(%r)',
+ self, op)
+ self.BuddyJoined(op)
else:
_logger.debug('Suppressing BuddyJoined: activity %r not '
'"valid"', self)