mod_adhoc: Sort commands by node. This guarantees the order remains the same across restarts etc.
authorFlorian Zeitz <florob@babelmonkeys.de>
Wed, 24 Jul 2013 22:08:07 +0200
changeset 5760 e599d9a367cf
parent 5759 767e29b2cd3a
child 5761 91f8cd53584c
mod_adhoc: Sort commands by node. This guarantees the order remains the same across restarts etc.
plugins/adhoc/mod_adhoc.lua
--- a/plugins/adhoc/mod_adhoc.lua	Wed Jul 24 21:50:38 2013 +0200
+++ b/plugins/adhoc/mod_adhoc.lua	Wed Jul 24 22:08:07 2013 +0200
@@ -6,6 +6,8 @@
 --
 
 local st = require "util.stanza";
+local keys = require "util.iterators".keys;
+local array_collect = require "util.array".collect;
 local is_admin = require "core.usermanager".is_admin;
 local adhoc_handle_cmd = module:require "adhoc".handle_cmd;
 local xmlns_cmd = "http://jabber.org/protocol/commands";
@@ -56,7 +58,9 @@
 		reply = st.reply(stanza);
 		reply:tag("query", { xmlns = xmlns_disco.."#items",
 		    node = xmlns_cmd });
-		for node, command in pairs(commands) do
+		local nodes = array_collect(keys(commands)):sort();
+		for _, node in ipairs(nodes) do
+			local command = commands[node];
 			if (command.permission == "admin" and admin)
 			    or (command.permission == "global_admin" and global_admin)
 			    or (command.permission == "user") then