From fc8a13df5a76176eb843ee0c4c4d4da462d3ab3b Mon Sep 17 00:00:00 2001 From: Lance Stout Date: Mon, 12 Dec 2011 19:38:32 -0800 Subject: [PATCH] Allow disco info/items handlers to return full Iq stanzas. Only allowing handlers to return a DiscoInfo/DiscoItem stanza works for the majority of cases, but does not allow for the addition of an RSM stanza, or other extensions. An Iq stanza returned by a handler must already be configured as a reply. --- sleekxmpp/plugins/xep_0030/disco.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/sleekxmpp/plugins/xep_0030/disco.py b/sleekxmpp/plugins/xep_0030/disco.py index b08ce50d..53086d4e 100644 --- a/sleekxmpp/plugins/xep_0030/disco.py +++ b/sleekxmpp/plugins/xep_0030/disco.py @@ -551,11 +551,14 @@ class xep_0030(base_plugin): jid, iq['disco_info']['node'], iq) - iq.reply() - if info: - info = self._fix_default_info(info) - iq.set_payload(info.xml) - iq.send() + if isinstance(info, Iq): + info.send() + else: + iq.reply() + if info: + info = self._fix_default_info(info) + iq.set_payload(info.xml) + iq.send() elif iq['type'] == 'result': log.debug("Received disco info result from" + \ "%s to %s.", iq['from'], iq['to']) @@ -581,10 +584,13 @@ class xep_0030(base_plugin): jid, iq['disco_items']['node'], iq) - iq.reply() - if items: - iq.set_payload(items.xml) - iq.send() + if isinstance(items, Iq): + items.send() + else: + iq.reply() + if items: + iq.set_payload(items.xml) + iq.send() elif iq['type'] == 'result': log.debug("Received disco items result from" + \ "%s to %s.", iq['from'], iq['to'])