summaryrefslogtreecommitdiff
path: root/slixmpp/plugins/xep_0050/adhoc.py
diff options
context:
space:
mode:
Diffstat (limited to 'slixmpp/plugins/xep_0050/adhoc.py')
-rw-r--r--slixmpp/plugins/xep_0050/adhoc.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/slixmpp/plugins/xep_0050/adhoc.py b/slixmpp/plugins/xep_0050/adhoc.py
index 2ecbfea6..fa6017d5 100644
--- a/slixmpp/plugins/xep_0050/adhoc.py
+++ b/slixmpp/plugins/xep_0050/adhoc.py
@@ -94,7 +94,7 @@ class XEP_0050(BasePlugin):
self._handle_command))
register_stanza_plugin(Iq, Command)
- register_stanza_plugin(Command, Form)
+ register_stanza_plugin(Command, Form, iterable=True)
self.xmpp.add_event_handler('command_execute',
self._handle_command_start)
@@ -415,12 +415,26 @@ class XEP_0050(BasePlugin):
del self.sessions[sessionid]
+ payload = session['payload']
+ if payload is None:
+ payload = []
+ if not isinstance(payload, list):
+ payload = [payload]
+
+ for item in payload:
+ register_stanza_plugin(Command, item.__class__, iterable=True)
+
iq = iq.reply()
+
iq['command']['node'] = node
iq['command']['sessionid'] = sessionid
iq['command']['actions'] = []
iq['command']['status'] = 'completed'
iq['command']['notes'] = session['notes']
+
+ for item in payload:
+ iq['command'].append(item)
+
iq.send()
else:
raise XMPPError('item-not-found')