core (memory/disco): recover getItems on bridge's discoItems method if an item is empty

This commit is contained in:
Goffi 2016-12-18 16:28:44 +01:00
commit 1b7290aa70

View file

@ -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)