~singpolyma/biboumi

ba61d2034058818fe76cef6b23f311259d37b3fe — louiz’ 4 years ago ed36c26
Empty the <command/> nodes before reusing them in our responses

fix #3356
2 files changed, 5 insertions(+), 1 deletions(-)

M src/xmpp/biboumi_adhoc_commands.cpp
M tests/end_to_end/__main__.py
M src/xmpp/biboumi_adhoc_commands.cpp => src/xmpp/biboumi_adhoc_commands.cpp +3 -0
@@ 116,6 116,7 @@ void ConfigureGlobalStep1(XmppComponent&, AdhocSession& session, XmlNode& comman

  auto options = Database::get_global_options(owner.bare());

  command_node.delete_all_children();
  XmlSubNode x(command_node, "jabber:x:data:x");
  x["type"] = "form";
  XmlSubNode title(x, "title");


@@ 223,6 224,7 @@ void ConfigureIrcServerStep1(XmppComponent&, AdhocSession& session, XmlNode& com
                                                  server_domain);
  auto commands = Database::get_after_connection_commands(options);

  command_node.delete_all_children();
  XmlSubNode x(command_node, "jabber:x:data:x");
  x["type"] = "form";
  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,
                                                                       iid.get_server(), iid.get_local());
  node.delete_all_children();
  XmlSubNode x(node, "jabber:x:data:x");
  x["type"] = "form";
  XmlSubNode title(x, "title");

M tests/end_to_end/__main__.py => tests/end_to_end/__main__.py +2 -1
@@ 2907,11 2907,12 @@ if __name__ == '__main__':
        Scenario("irc_channel_configure",
                 [
                     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']",
                                             "/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='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"))
                             ),