mod_s2s: Detect TLS compression
[prosody.git] / util / stanza.lua
index bf94411556b158c4eab8597cfaaf33d1350cee9b..a0ab2a5aa0ae5d9be003fba34a2682931154ef81 100644 (file)
@@ -8,22 +8,16 @@
 
 
 local t_insert      =  table.insert;
-local t_concat      =  table.concat;
 local t_remove      =  table.remove;
 local t_concat      =  table.concat;
 local s_format      = string.format;
 local s_match       =  string.match;
 local tostring      =      tostring;
 local setmetatable  =  setmetatable;
-local getmetatable  =  getmetatable;
 local pairs         =         pairs;
 local ipairs        =        ipairs;
 local type          =          type;
-local next          =          next;
-local print         =         print;
-local unpack        =        unpack;
 local s_gsub        =   string.gsub;
-local s_char        =   string.char;
 local s_find        =   string.find;
 local os            =            os;
 
@@ -138,29 +132,20 @@ function stanza_mt:children()
                end, self, i;
 end
 
-function stanza_mt:matching_tags(name, xmlns)
-       xmlns = xmlns or self.attr.xmlns;
+function stanza_mt:childtags(name, xmlns)
        local tags = self.tags;
        local start_i, max_i = 1, #tags;
        return function ()
-                       for i=start_i,max_i do
-                               v = tags[i];
-                               if (not name or v.name == name)
-                               and (not xmlns or xmlns == v.attr.xmlns) then
-                                       start_i = i+1;
-                                       return v;
-                               end
+               for i = start_i, max_i do
+                       local v = tags[i];
+                       if (not name or v.name == name)
+                       and ((not xmlns and self.attr.xmlns == v.attr.xmlns)
+                               or v.attr.xmlns == xmlns) then
+                               start_i = i+1;
+                               return v;
                        end
-               end, tags, i;
-end
-
-function stanza_mt:childtags()
-       local i = 0;
-       return function (a)
-                       i = i + 1
-                       local v = self.tags[i]
-                       if v then return v; end
-               end, self.tags[1], i;
+               end
+       end;
 end
 
 function stanza_mt:maptags(callback)
@@ -252,7 +237,7 @@ function stanza_mt.get_error(stanza)
        end
        type = error_tag.attr.type;
        
-       for child in error_tag:childtags() do
+       for _, child in ipairs(error_tag.tags) do
                if child.attr.xmlns == xmlns_stanzas then
                        if not text and child.name == "text" then
                                text = child:get_text();
@@ -267,11 +252,6 @@ function stanza_mt.get_error(stanza)
        return type, condition or "undefined-condition", text;
 end
 
-function stanza_mt.__add(s1, s2)
-       return s1:add_direct_child(s2);
-end
-
-
 do
        local id = 0;
        function new_id()