core (disco): fixed disco capabilities (empty disco was used)

This commit is contained in:
Goffi 2018-05-22 09:59:58 +02:00
commit c0e2a4f84b

View file

@ -84,7 +84,13 @@ class HashManager(object):
def fillHashes(hashes):
for hash_, xml in hashes.iteritems():
element = xml_tools.ElementParser()(xml)
self.hashes[hash_] = disco.DiscoInfo.fromElement(element)
disco_info = disco.DiscoInfo.fromElement(element)
if not disco_info.features and not disco_info.identities:
log.warning(_(u"no feature/identity found in disco element (hash: {cap_hash}), ignoring: {xml}").format(
cap_hash=hash_, xml=xml))
else:
self.hashes[hash_] = disco_info
log.info(u"Disco hashes loaded")
d = self.persistent.load()
d.addCallback(fillHashes)
@ -158,10 +164,10 @@ class Discovery(object):
if jid_ is None:
jid_ = jid.JID(client.jid.host)
try:
cap_hash = self.host.memory.getEntityData(jid_, [C.ENTITY_CAP_HASH], client.profile)[C.ENTITY_CAP_HASH]
if not use_cache:
# we ignore cache, so we pretend we haven't found it
raise KeyError
cap_hash = self.host.memory.getEntityData(jid_, [C.ENTITY_CAP_HASH], client.profile)[C.ENTITY_CAP_HASH]
except (KeyError, exceptions.UnknownEntityError):
# capability hash is not available, we'll compute one
def infosCb(disco_infos):