diff options
author | Kim Alvefur <zash@zash.se> | 2019-11-23 01:29:03 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2019-11-23 01:29:03 +0100 |
commit | 3aee8e24a6873fce6b7ab30f5b87d17089e0d5a6 (patch) | |
tree | 60f04ed9cdc074643bcc84b932c83ce8b120ea45 | |
parent | e130b377970996b9eb3d36c74db121835ed0a57e (diff) | |
download | prosody-3aee8e24a6873fce6b7ab30f5b87d17089e0d5a6.tar.gz prosody-3aee8e24a6873fce6b7ab30f5b87d17089e0d5a6.zip |
s2s: Allow passing a custom error for bouncing queued stanzas (#770)
Since stream errors and stanza errors are different
-rw-r--r-- | core/s2smanager.lua | 4 | ||||
-rw-r--r-- | plugins/mod_s2s/mod_s2s.lua | 6 |
2 files changed, 5 insertions, 5 deletions
diff --git a/core/s2smanager.lua b/core/s2smanager.lua index 7471286c..7f156f12 100644 --- a/core/s2smanager.lua +++ b/core/s2smanager.lua @@ -84,14 +84,14 @@ local function retire_session(session, reason) return setmetatable(session, resting_session); end -local function destroy_session(session, reason) +local function destroy_session(session, reason, bounce_reason) if session.destroyed then return; end local log = session.log or log; log("debug", "Destroying %s session %s->%s%s%s", session.direction, session.from_host, session.to_host, reason and ": " or "", reason or ""); if session.direction == "outgoing" then hosts[session.from_host].s2sout[session.to_host] = nil; - session:bounce_sendq(reason); + session:bounce_sendq(bounce_reason or reason); elseif session.direction == "incoming" then if session.outgoing then hosts[session.to_host].s2sout[session.from_host] = nil; diff --git a/plugins/mod_s2s/mod_s2s.lua b/plugins/mod_s2s/mod_s2s.lua index 7ee88f3e..6bb444f5 100644 --- a/plugins/mod_s2s/mod_s2s.lua +++ b/plugins/mod_s2s/mod_s2s.lua @@ -487,7 +487,7 @@ end --- Session methods local stream_xmlns_attr = {xmlns='urn:ietf:params:xml:ns:xmpp-streams'}; -local function session_close(session, reason, remote_reason) +local function session_close(session, reason, remote_reason, bounce_reason) local log = session.log or log; if session.conn then if session.notopen then @@ -537,12 +537,12 @@ local function session_close(session, reason, remote_reason) add_task(stream_close_timeout, function () if not session.destroyed then session.log("warn", "Failed to receive a stream close response, closing connection anyway..."); - s2s_destroy_session(session, reason); + s2s_destroy_session(session, reason, bounce_reason); conn:close(); end end); else - s2s_destroy_session(session, reason); + s2s_destroy_session(session, reason, bounce_reason); conn:close(); -- Close immediately, as this is an outgoing connection or is not authed end end |