mod_lastactivity, mod_legacyauth, mod_presence, mod_saslauth, mod_tls: Use the newer stanza:get_child APIs and optimize away some table lookups
authorKim Alvefur <zash@zash.se>
Fri, 04 Jul 2014 22:52:34 +0200
changeset 6302 76699a0ae4c4
parent 6301 2fdd71b08126
child 6303 d289582d3518
mod_lastactivity, mod_legacyauth, mod_presence, mod_saslauth, mod_tls: Use the newer stanza:get_child APIs and optimize away some table lookups
plugins/adhoc/adhoc.lib.lua
plugins/mod_lastactivity.lua
plugins/mod_legacyauth.lua
plugins/mod_presence.lua
plugins/mod_saslauth.lua
plugins/mod_tls.lua
--- a/plugins/adhoc/adhoc.lib.lua	Fri Jul 04 21:48:25 2014 +0200
+++ b/plugins/adhoc/adhoc.lib.lua	Fri Jul 04 22:52:34 2014 +0200
@@ -25,12 +25,13 @@
 end
 
 function _M.handle_cmd(command, origin, stanza)
-	local sessionid = stanza.tags[1].attr.sessionid or uuid.generate();
+	local cmdtag = stanza.tags[1]
+	local sessionid = cmdtag.attr.sessionid or uuid.generate();
 	local dataIn = {};
 	dataIn.to = stanza.attr.to;
 	dataIn.from = stanza.attr.from;
-	dataIn.action = stanza.tags[1].attr.action or "execute";
-	dataIn.form = stanza.tags[1]:child_with_ns("jabber:x:data");
+	dataIn.action = cmdtag.attr.action or "execute";
+	dataIn.form = cmdtag:get_child("x", "jabber:x:data");
 
 	local data, state = command:handler(dataIn, states[sessionid]);
 	states[sessionid] = state;
--- a/plugins/mod_lastactivity.lua	Fri Jul 04 21:48:25 2014 +0200
+++ b/plugins/mod_lastactivity.lua	Fri Jul 04 22:52:34 2014 +0200
@@ -19,8 +19,7 @@
 	local stanza = event.stanza;
 	if not(stanza.attr.to) and stanza.attr.type == "unavailable" then
 		local t = os.time();
-		local s = stanza:child_with_name("status");
-		s = s and #s.tags == 0 and s[1] or "";
+		local s = stanza:get_child_text("status");
 		map[event.origin.username] = {s = s, t = t};
 	end
 end, 10);
--- a/plugins/mod_legacyauth.lua	Fri Jul 04 21:48:25 2014 +0200
+++ b/plugins/mod_legacyauth.lua	Fri Jul 04 22:52:34 2014 +0200
@@ -44,9 +44,10 @@
 		return true;
 	end
 
-	local username = stanza.tags[1]:child_with_name("username");
-	local password = stanza.tags[1]:child_with_name("password");
-	local resource = stanza.tags[1]:child_with_name("resource");
+	local query = stanza.tags[1];
+	local username = query:get_child("username");
+	local password = query:get_child("password");
+	local resource = query:get_child("resource");
 	if not (username and password and resource) then
 		local reply = st.reply(stanza);
 		session.send(reply:query("jabber:iq:auth")
--- a/plugins/mod_presence.lua	Fri Jul 04 21:48:25 2014 +0200
+++ b/plugins/mod_presence.lua	Fri Jul 04 22:52:34 2014 +0200
@@ -55,14 +55,14 @@
 
 function handle_normal_presence(origin, stanza)
 	if ignore_presence_priority then
-		local priority = stanza:child_with_name("priority");
+		local priority = stanza:get_child("priority");
 		if priority and priority[1] ~= "0" then
 			for i=#priority.tags,1,-1 do priority.tags[i] = nil; end
 			for i=#priority,1,-1 do priority[i] = nil; end
 			priority[1] = "0";
 		end
 	end
-	local priority = stanza:child_with_name("priority");
+	local priority = stanza:get_child("priority");
 	if priority and #priority > 0 then
 		priority = t_concat(priority);
 		if s_find(priority, "^[+-]?[0-9]+$") then
--- a/plugins/mod_saslauth.lua	Fri Jul 04 21:48:25 2014 +0200
+++ b/plugins/mod_saslauth.lua	Fri Jul 04 22:52:34 2014 +0200
@@ -284,7 +284,7 @@
 	local resource;
 	if stanza.attr.type == "set" then
 		local bind = stanza.tags[1];
-		resource = bind:child_with_name("resource");
+		resource = bind:get_child("resource");
 		resource = resource and #resource.tags == 0 and resource[1] or nil;
 	end
 	local success, err_type, err, err_msg = sm_bind_resource(origin, resource);
--- a/plugins/mod_tls.lua	Fri Jul 04 21:48:25 2014 +0200
+++ b/plugins/mod_tls.lua	Fri Jul 04 22:52:34 2014 +0200
@@ -108,7 +108,7 @@
 -- For s2sout connections, start TLS if we can
 module:hook_stanza("http://etherx.jabber.org/streams", "features", function (session, stanza)
 	module:log("debug", "Received features element");
-	if can_do_tls(session) and stanza:child_with_ns(xmlns_starttls) then
+	if can_do_tls(session) and stanza:get_child("starttls", xmlns_starttls) then
 		module:log("debug", "%s is offering TLS, taking up the offer...", session.to_host);
 		session.sends2s("<starttls xmlns='"..xmlns_starttls.."'/>");
 		return true;