# HG changeset patch # User Goffi # Date 1526975998 -7200 # Node ID e70023e84974cb363ec62b7db3ecf70150421e60 # Parent 57c8c155192f8060fee33b06b0f3a619485a8a50 core (disco): fixed disco capabilities (empty disco was used) diff -r 57c8c155192f -r e70023e84974 sat/memory/disco.py --- a/sat/memory/disco.py Fri May 11 20:06:06 2018 +0200 +++ b/sat/memory/disco.py Tue May 22 09:59:58 2018 +0200 @@ -84,7 +84,13 @@ 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 @@ 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): diff -r 57c8c155192f -r e70023e84974 sat/plugins/plugin_xep_0115.py --- a/sat/plugins/plugin_xep_0115.py Fri May 11 20:06:06 2018 +0200 +++ b/sat/plugins/plugin_xep_0115.py Tue May 22 09:59:58 2018 +0200 @@ -79,11 +79,10 @@ disco_infos = disco.DiscoInfo() for item in _infos: disco_infos.append(item) - disco_infos = disco.DiscoInfo() cap_hash = client._caps_hash = self.host.memory.disco.generateHash(disco_infos) - log.info("Our capability hash has been generated: [{cap_hash}]".format( + log.info(u"Our capability hash has been generated: [{cap_hash}]".format( cap_hash = cap_hash)) - log.debug("Generating capability domish.Element") + log.debug(u"Generating capability domish.Element") c_elt = domish.Element((NS_ENTITY_CAPABILITY, 'c')) c_elt['hash'] = 'sha-1' c_elt['node'] = C.APP_URL