Empty the <command/> nodes before reusing them in our responses

fix #3356
This commit is contained in:
louiz’
2018-05-14 22:07:29 +02:00
parent ed36c26598
commit ba61d20340
2 changed files with 5 additions and 1 deletions
+3
View File
@@ -116,6 +116,7 @@ void ConfigureGlobalStep1(XmppComponent&, AdhocSession& session, XmlNode& comman
auto options = Database::get_global_options(owner.bare()); auto options = Database::get_global_options(owner.bare());
command_node.delete_all_children();
XmlSubNode x(command_node, "jabber:x:data:x"); XmlSubNode x(command_node, "jabber:x:data:x");
x["type"] = "form"; x["type"] = "form";
XmlSubNode title(x, "title"); XmlSubNode title(x, "title");
@@ -223,6 +224,7 @@ void ConfigureIrcServerStep1(XmppComponent&, AdhocSession& session, XmlNode& com
server_domain); server_domain);
auto commands = Database::get_after_connection_commands(options); auto commands = Database::get_after_connection_commands(options);
command_node.delete_all_children();
XmlSubNode x(command_node, "jabber:x:data:x"); XmlSubNode x(command_node, "jabber:x:data:x");
x["type"] = "form"; x["type"] = "form";
XmlSubNode title(x, "title"); XmlSubNode title(x, "title");
@@ -508,6 +510,7 @@ void insert_irc_channel_configuration_form(XmlNode& node, const Jid& requester,
auto options = Database::get_irc_channel_options_with_server_default(requester.local + "@" + requester.domain, auto options = Database::get_irc_channel_options_with_server_default(requester.local + "@" + requester.domain,
iid.get_server(), iid.get_local()); iid.get_server(), iid.get_local());
node.delete_all_children();
XmlSubNode x(node, "jabber:x:data:x"); XmlSubNode x(node, "jabber:x:data:x");
x["type"] = "form"; x["type"] = "form";
XmlSubNode title(x, "title"); XmlSubNode title(x, "title");
+2 -1
View File
@@ -2907,11 +2907,12 @@ if __name__ == '__main__':
Scenario("irc_channel_configure", Scenario("irc_channel_configure",
[ [
handshake_sequence(), handshake_sequence(),
partial(send_stanza, "<iq type='set' id='id1' from='{jid_one}/{resource_one}' to='#foo%{irc_server_one}'><command xmlns='http://jabber.org/protocol/commands' node='configure' action='execute' /></iq>"), partial(send_stanza, "<iq type='set' id='id1' from='{jid_one}/{resource_one}' to='#foo%{irc_server_one}'><command xmlns='http://jabber.org/protocol/commands' node='configure' action='execute'><dummy/></command></iq>"),
partial(expect_stanza, ("/iq[@type='result']/commands:command[@node='configure'][@sessionid][@status='executing']", partial(expect_stanza, ("/iq[@type='result']/commands:command[@node='configure'][@sessionid][@status='executing']",
"/iq/commands:command/dataform:x[@type='form']/dataform:field[@type='text-single'][@var='encoding_in']", "/iq/commands:command/dataform:x[@type='form']/dataform:field[@type='text-single'][@var='encoding_in']",
"/iq/commands:command/dataform:x[@type='form']/dataform:field[@type='text-single'][@var='encoding_out']", "/iq/commands:command/dataform:x[@type='form']/dataform:field[@type='text-single'][@var='encoding_out']",
"/iq/commands:command/dataform:x[@type='form']/dataform:field[@type='list-single'][@var='record_history']/dataform:value[text()='unset']", "/iq/commands:command/dataform:x[@type='form']/dataform:field[@type='list-single'][@var='record_history']/dataform:value[text()='unset']",
"!/iq/commands:command/commands:dummy",
), ),
after = partial(save_value, "sessionid", partial(extract_attribute, "/iq[@type='result']/commands:command[@node='configure']", "sessionid")) after = partial(save_value, "sessionid", partial(extract_attribute, "/iq[@type='result']/commands:command[@node='configure']", "sessionid"))
), ),