From abfffb6e5d2fb108878a8bc8f3702dcd868e5d2d Mon Sep 17 00:00:00 2001 From: Morgan Collett Date: Thu, 22 Nov 2007 13:08:56 +0000 Subject: #4920: Harden _add_buddies to cope with no handle when calling BuddyHandleJoined --- 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) -- cgit v0.9.1