Comparison

plugins/mod_c2s.lua @ 8232:176b7f4e4ac9

mod_c2s: Iterate over child tags instead of child nodes in stream error (fixes traceback from #987)
author Kim Alvefur <zash@zash.se>
date Wed, 13 Sep 2017 18:18:57 +0200
parent 7328:de76ded98b84
child 8234:97b3ca502547
child 8844:29c6d2681bad
comparison
equal deleted inserted replaced
8224:776789a98047 8232:176b7f4e4ac9
96 elseif error == "parse-error" then 96 elseif error == "parse-error" then
97 (session.log or log)("debug", "Client XML parse error: %s", tostring(data)); 97 (session.log or log)("debug", "Client XML parse error: %s", tostring(data));
98 session:close("not-well-formed"); 98 session:close("not-well-formed");
99 elseif error == "stream-error" then 99 elseif error == "stream-error" then
100 local condition, text = "undefined-condition"; 100 local condition, text = "undefined-condition";
101 for child in data:children() do 101 for child in data:childtags(nil, xmlns_xmpp_streams) do
102 if child.attr.xmlns == xmlns_xmpp_streams then 102 if child.name ~= "text" then
103 if child.name ~= "text" then 103 condition = child.name;
104 condition = child.name; 104 else
105 else 105 text = child:get_text();
106 text = child:get_text(); 106 end
107 end 107 if condition ~= "undefined-condition" and text then
108 if condition ~= "undefined-condition" and text then 108 break;
109 break;
110 end
111 end 109 end
112 end 110 end
113 text = condition .. (text and (" ("..text..")") or ""); 111 text = condition .. (text and (" ("..text..")") or "");
114 session.log("info", "Session closed by remote with error: %s", text); 112 session.log("info", "Session closed by remote with error: %s", text);
115 session:close(nil, text); 113 session:close(nil, text);