Comparison

plugins/mod_c2s.lua @ 11868:ae093c259da2

mod_c2s,etc: Identify stanza object with appropriate function Better than duck typing, in case anyone ever passes a non-stanza table with a 'name' field.
author Kim Alvefur <zash@zash.se>
date Sun, 24 Oct 2021 15:17:01 +0200
parent 11778:f254fd16218a
child 11899:6d06068363aa
comparison
equal deleted inserted replaced
11867:bb20cfd4884f 11868:ae093c259da2
192 end 192 end
193 if reason then -- nil == no err, initiated by us, false == initiated by client 193 if reason then -- nil == no err, initiated by us, false == initiated by client
194 local stream_error = st.stanza("stream:error"); 194 local stream_error = st.stanza("stream:error");
195 if type(reason) == "string" then -- assume stream error 195 if type(reason) == "string" then -- assume stream error
196 stream_error:tag(reason, {xmlns = 'urn:ietf:params:xml:ns:xmpp-streams' }); 196 stream_error:tag(reason, {xmlns = 'urn:ietf:params:xml:ns:xmpp-streams' });
197 elseif st.is_stanza(reason) then
198 stream_error = reason;
197 elseif type(reason) == "table" then 199 elseif type(reason) == "table" then
198 if reason.condition then 200 if reason.condition then
199 stream_error:tag(reason.condition, stream_xmlns_attr):up(); 201 stream_error:tag(reason.condition, stream_xmlns_attr):up();
200 if reason.text then 202 if reason.text then
201 stream_error:tag("text", stream_xmlns_attr):text(reason.text):up(); 203 stream_error:tag("text", stream_xmlns_attr):text(reason.text):up();
202 end 204 end
203 if reason.extra then 205 if reason.extra then
204 stream_error:add_child(reason.extra); 206 stream_error:add_child(reason.extra);
205 end 207 end
206 elseif reason.name then -- a stanza
207 stream_error = reason;
208 end 208 end
209 end 209 end
210 stream_error = tostring(stream_error); 210 stream_error = tostring(stream_error);
211 log("debug", "Disconnecting client, <stream:error> is: %s", stream_error); 211 log("debug", "Disconnecting client, <stream:error> is: %s", stream_error);
212 session.send(stream_error); 212 session.send(stream_error);