diff options
author | aearil <aearil@paranoici.org> | 2020-08-05 20:35:30 -0400 |
---|---|---|
committer | aearil <aearil@paranoici.org> | 2020-08-05 20:35:30 -0400 |
commit | f90713cb9e14b6b05903f570b598ea7f8050a37f (patch) | |
tree | b4f384e1db227c71a42254cd390a7fd81689d9f6 | |
parent | 9b9ace97f498de8101588a598ca8849e53a9a882 (diff) | |
download | slixmpp-f90713cb9e14b6b05903f570b598ea7f8050a37f.tar.gz slixmpp-f90713cb9e14b6b05903f570b598ea7f8050a37f.tar.bz2 slixmpp-f90713cb9e14b6b05903f570b598ea7f8050a37f.tar.xz slixmpp-f90713cb9e14b6b05903f570b598ea7f8050a37f.zip |
Fix 'from' attribute missing for ComponentXMPP Disco IQ
Fixes #3455
This reuses the 'to' attribute of the received presence as a 'from' for
the Disco IQ. I don't know if this is the best way to do it, but in
testing with a simple component it fixed the error.
Also I'm not sure whether pres['to'] would also be valid when
is_component is False.
-rw-r--r-- | slixmpp/plugins/xep_0115/caps.py | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/slixmpp/plugins/xep_0115/caps.py b/slixmpp/plugins/xep_0115/caps.py index 749b74bd..0acfa83a 100644 --- a/slixmpp/plugins/xep_0115/caps.py +++ b/slixmpp/plugins/xep_0115/caps.py @@ -157,10 +157,12 @@ class XEP_0115(BasePlugin): self.assign_verstring(pres['from'], ver) return + ifrom = pres['to'] if self.xmpp.is_component else None + if pres['caps']['hash'] not in self.hashes: try: log.debug("Unknown caps hash: %s", pres['caps']['hash']) - self.xmpp['xep_0030'].get_info(jid=pres['from']) + self.xmpp['xep_0030'].get_info(jid=pres['from'], ifrom=ifrom) return except XMPPError: return @@ -169,7 +171,8 @@ class XEP_0115(BasePlugin): try: node = '%s#%s' % (pres['caps']['node'], ver) caps = await self.xmpp['xep_0030'].get_info(pres['from'], node, - coroutine=True) + coroutine=True, + ifrom=ifrom) if isinstance(caps, Iq): caps = caps['disco_info'] |