From 1b7290aa7010ccd851022f6dcc8b2b0c2f399408 Mon Sep 17 00:00:00 2001 From: Goffi Date: Sun, 18 Dec 2016 16:28:44 +0100 Subject: [PATCH] core (memory/disco): recover getItems on bridge's discoItems method if an item is empty --- src/memory/disco.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/memory/disco.py b/src/memory/disco.py index 67cbf93a..2887a4a9 100755 --- a/src/memory/disco.py +++ b/src/memory/disco.py @@ -350,4 +350,11 @@ class Discovery(object): profile = self.host.memory.getProfileName(profile_key) entity = jid.JID(entity_jid_s) disco_items = yield self.getItems(entity, profile=profile) - defer.returnValue([(item.entity.full(), item.nodeIdentifier or '', item.name or '') for item in disco_items]) + try: + ret = [(item.entity.full(), item.nodeIdentifier or '', item.name or '') for item in disco_items] + except AttributeError: + log.error(u"error while getting items from {entity}, it may result from invalid item(s)".format(entity=entity.full())) + # second try by ignoring empty items + ret = [(item.entity.full(), item.nodeIdentifier or '', item.name or '') for item in disco_items if item.entity] + + defer.returnValue(ret)