From ef6cb64b9edf578685bedc02f72ed27bbc1d974f Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Sun, 24 Oct 2021 15:17:01 +0200 Subject: 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. --- plugins/mod_bosh.lua | 4 ++-- plugins/mod_c2s.lua | 4 ++-- plugins/mod_component.lua | 6 +++--- plugins/mod_websocket.lua | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/plugins/mod_bosh.lua b/plugins/mod_bosh.lua index fbd641da..ceb31a9f 100644 --- a/plugins/mod_bosh.lua +++ b/plugins/mod_bosh.lua @@ -236,6 +236,8 @@ local function bosh_close_stream(session, reason) if type(reason) == "string" then -- assume stream error close_reply:tag("stream:error") :tag(reason, {xmlns = xmlns_xmpp_streams}); + elseif st.is_stanza(reason) then + close_reply = reason; elseif type(reason) == "table" then if reason.condition then close_reply:tag("stream:error") @@ -246,8 +248,6 @@ local function bosh_close_stream(session, reason) if reason.extra then close_reply:add_child(reason.extra); end - elseif reason.name then -- a stanza - close_reply = reason; end end log("info", "Disconnecting client, is: %s", close_reply); diff --git a/plugins/mod_c2s.lua b/plugins/mod_c2s.lua index e97b3b3f..298acc28 100644 --- a/plugins/mod_c2s.lua +++ b/plugins/mod_c2s.lua @@ -194,6 +194,8 @@ local function session_close(session, reason) local stream_error = st.stanza("stream:error"); if type(reason) == "string" then -- assume stream error stream_error:tag(reason, {xmlns = 'urn:ietf:params:xml:ns:xmpp-streams' }); + elseif st.is_stanza(reason) then + stream_error = reason; elseif type(reason) == "table" then if reason.condition then stream_error:tag(reason.condition, stream_xmlns_attr):up(); @@ -203,8 +205,6 @@ local function session_close(session, reason) if reason.extra then stream_error:add_child(reason.extra); end - elseif reason.name then -- a stanza - stream_error = reason; end end stream_error = tostring(stream_error); diff --git a/plugins/mod_component.lua b/plugins/mod_component.lua index fb5f5ab8..f57c4381 100644 --- a/plugins/mod_component.lua +++ b/plugins/mod_component.lua @@ -265,6 +265,9 @@ local function session_close(session, reason) if type(reason) == "string" then -- assume stream error module:log("info", "Disconnecting component, is: %s", reason); session.send(st.stanza("stream:error"):tag(reason, {xmlns = 'urn:ietf:params:xml:ns:xmpp-streams' })); + elseif st.is_stanza(reason) then + module:log("info", "Disconnecting component, is: %s", reason); + session.send(reason); elseif type(reason) == "table" then if reason.condition then local stanza = st.stanza("stream:error"):tag(reason.condition, stream_xmlns_attr):up(); @@ -276,9 +279,6 @@ local function session_close(session, reason) end module:log("info", "Disconnecting component, is: %s", stanza); session.send(stanza); - elseif reason.name then -- a stanza - module:log("info", "Disconnecting component, is: %s", reason); - session.send(reason); end end end diff --git a/plugins/mod_websocket.lua b/plugins/mod_websocket.lua index 04a8303a..f0134b4a 100644 --- a/plugins/mod_websocket.lua +++ b/plugins/mod_websocket.lua @@ -71,6 +71,8 @@ local function session_close(session, reason) local stream_error = st.stanza("stream:error"); if type(reason) == "string" then -- assume stream error stream_error:tag(reason, {xmlns = 'urn:ietf:params:xml:ns:xmpp-streams' }); + elseif st.is_stanza(reason) then + stream_error = reason; elseif type(reason) == "table" then if reason.condition then stream_error:tag(reason.condition, stream_xmlns_attr):up(); @@ -80,8 +82,6 @@ local function session_close(session, reason) if reason.extra then stream_error:add_child(reason.extra); end - elseif reason.name then -- a stanza - stream_error = reason; end end log("debug", "Disconnecting client, is: %s", stream_error); -- cgit v1.2.3