summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraearil <aearil@paranoici.org>2020-08-05 20:35:30 -0400
committeraearil <aearil@paranoici.org>2020-08-05 20:35:30 -0400
commitf90713cb9e14b6b05903f570b598ea7f8050a37f (patch)
treeb4f384e1db227c71a42254cd390a7fd81689d9f6
parent9b9ace97f498de8101588a598ca8849e53a9a882 (diff)
downloadslixmpp-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.py7
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']