diff options
author | Matthew Wild <mwild1@gmail.com> | 2009-10-17 19:47:01 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2009-10-17 19:47:01 +0100 |
commit | 555d09e3247882f28f42337ab635c3b5d047653f (patch) | |
tree | eb9f1adb558a88d3c6efef8d1a762f25856dbd0d /util/stanza.lua | |
parent | 9db4d1ee505ef6e23e7a67d5ac5154e8b25dd2f3 (diff) | |
download | prosody-555d09e3247882f28f42337ab635c3b5d047653f.tar.gz prosody-555d09e3247882f28f42337ab635c3b5d047653f.zip |
util.stanza: Don't add xmlns to tags when serializing if same as the parent tag's xmlns. Should hopefully shut up Gajim once and for all :)
Diffstat (limited to 'util/stanza.lua')
-rw-r--r-- | util/stanza.lua | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/util/stanza.lua b/util/stanza.lua index 4e833caa..1e0b1517 100644 --- a/util/stanza.lua +++ b/util/stanza.lua @@ -6,6 +6,7 @@ -- COPYING file in the source package for more information. -- + local t_insert = table.insert; local t_concat = table.concat; local t_remove = table.remove; @@ -130,7 +131,7 @@ do _M.xml_escape = xml_escape; end -local function _dostring(t, buf, self, xml_escape) +local function _dostring(t, buf, self, xml_escape, parentns) local nsid = 0; local name = t.name t_insert(buf, "<"..name); @@ -139,7 +140,7 @@ local function _dostring(t, buf, self, xml_escape) local ns, attrk = s_match(k, "^([^|]+)|(.+)$"); nsid = nsid + 1; t_insert(buf, " xmlns:ns"..nsid.."='"..xml_escape(ns).."' ".."ns"..nsid..":"..attrk.."='"..xml_escape(v).."'"); - else + elseif not(k == "xmlns" and v == parentns) then t_insert(buf, " "..k.."='"..xml_escape(v).."'"); end end @@ -151,7 +152,7 @@ local function _dostring(t, buf, self, xml_escape) for n=1,len do local child = t[n]; if child.name then - self(child, buf, self, xml_escape); + self(child, buf, self, xml_escape, t.attr.xmlns); else t_insert(buf, xml_escape(child)); end @@ -161,7 +162,7 @@ local function _dostring(t, buf, self, xml_escape) end function stanza_mt.__tostring(t) local buf = {}; - _dostring(t, buf, _dostring, xml_escape); + _dostring(t, buf, _dostring, xml_escape, nil); return t_concat(buf); end |