From e72299347c7fd844366a103f3cfc6c34d7001d3d Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Sun, 19 Oct 2008 22:17:20 +0000 Subject: Merge commit 'v0.82.2' --- diff --git a/NEWS b/NEWS index be61a11..9267d65 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,20 @@ +sugar-presence-service 0.82.2 (2008-08-08) +========================================== + +The "I should use pyflakes more often" release. + +This brown paper bag release fixes a stupid name error in #5618 fixe. + +sugar-presence-service 0.82.1 (2008-08-07) +========================================== + +The "One more bug fixed" release. + +Fixes: + +* dev.laptop.org #5618: PS should drop handles causing InspectHandles failing + + sugar-presence-service 0.82.0 (2008-08-06) ========================================== diff --git a/configure.ac b/configure.ac index 8ffeedc..aa5cbc6 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([Sugar Presence Service],[0.82.0],[],[sugar-presence-service]) +AC_INIT([Sugar Presence Service],[0.82.2],[],[sugar-presence-service]) AC_PREREQ([2.59]) diff --git a/src/telepathy_plugin.py b/src/telepathy_plugin.py index 2042111..25bbd1c 100644 --- a/src/telepathy_plugin.py +++ b/src/telepathy_plugin.py @@ -35,6 +35,7 @@ from telepathy.interfaces import (CONN_INTERFACE, CHANNEL_TYPE_TEXT, CONN_INTERFACE_PRESENCE, CONN_INTERFACE_AVATARS, CONN_INTERFACE_ALIASING, CHANNEL_TYPE_CONTACT_LIST, CONN_MGR_INTERFACE) +from telepathy.errors import (InvalidArgument, InvalidHandle) import psutils @@ -356,6 +357,20 @@ class TelepathyPlugin(gobject.GObject): _logger.debug('%r: Contacts now offline: %r', self, handles) self.emit("contacts-offline", handles) + def _inspect_handles_one_by_one(self, handle_type, handles): + jids = [] + + for handle in handles: + try: + jid = self._conn[CONN_INTERFACE].InspectHandles(handle_type, + [handle]) + except (InvalidArgument, InvalidHandle): + continue + else: + jids.append(jid[0]) + + return jids + def _contacts_online(self, handles): """Handle contacts coming online""" relevant = [] @@ -375,8 +390,16 @@ class TelepathyPlugin(gobject.GObject): if not relevant: return - jids = self._conn[CONN_INTERFACE].InspectHandles( - HANDLE_TYPE_CONTACT, relevant) + try: + jids = self._conn[CONN_INTERFACE].InspectHandles( + HANDLE_TYPE_CONTACT, relevant) + except (InvalidArgument, InvalidHandle): + # InspectHandles failed so discard invalid handles by trying to + # inspect them one by one. + # FIXME: the Contacts interface should offer a proper way to do this. + jids = self._inspect_handles_one_by_one(HANDLE_TYPE_CONTACT, relevant) + if not jids: + return handle_to_objid = self.identify_contacts(None, relevant, jids) objids = [] -- cgit v0.9.1