diff options
author | Matthew Wild <mwild1@gmail.com> | 2025-03-11 18:45:23 +0000 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2025-03-11 18:45:23 +0000 |
commit | 74970e28158f7699fafafd0daf088ca68d73b662 (patch) | |
tree | b6bf1832c0493316397010671c5de6fd3a55324e /plugins | |
parent | 53774a42348c2a8467f805d5dd7d34913937262f (diff) | |
parent | 8005ac825f35d23a986bb8a92445cc89ca08bf23 (diff) | |
download | prosody-74970e28158f7699fafafd0daf088ca68d73b662.tar.gz prosody-74970e28158f7699fafafd0daf088ca68d73b662.zip |
Merge 13.0->trunkHEADorigin/mastermaster
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/mod_c2s.lua | 8 | ||||
-rw-r--r-- | plugins/mod_storage_internal.lua | 4 | ||||
-rw-r--r-- | plugins/mod_websocket.lua | 28 |
3 files changed, 25 insertions, 15 deletions
diff --git a/plugins/mod_c2s.lua b/plugins/mod_c2s.lua index a9417368..c1fbdb9e 100644 --- a/plugins/mod_c2s.lua +++ b/plugins/mod_c2s.lua @@ -252,12 +252,16 @@ local function session_close(session, reason) if not session.destroyed then session.log("warn", "Failed to receive a stream close response, closing connection anyway..."); sm_destroy_session(session, reason_text); - if conn then conn:close(); end + if conn then + conn:close(); + end end end); else sm_destroy_session(session, reason_text); - if conn then conn:close(); end + if conn then + conn:close(); + end end else local reason_text = (reason and (reason.name or reason.text or reason.condition)) or reason; diff --git a/plugins/mod_storage_internal.lua b/plugins/mod_storage_internal.lua index a43dd272..1332ae75 100644 --- a/plugins/mod_storage_internal.lua +++ b/plugins/mod_storage_internal.lua @@ -4,7 +4,7 @@ local array = require "prosody.util.array"; local datetime = require "prosody.util.datetime"; local st = require "prosody.util.stanza"; local now = require "prosody.util.time".now; -local id = require "prosody.util.id".medium; +local uuid_v7 = require "prosody.util.uuid".v7; local jid_join = require "prosody.util.jid".join; local set = require "prosody.util.set"; local it = require "prosody.util.iterators"; @@ -111,7 +111,7 @@ function archive:append(username, key, value, when, with) module:log("debug", "%s reached or over quota, not adding to store", username); return nil, "quota-limit"; end - key = id(); + key = uuid_v7(); end module:log("debug", "%s has %d items out of %d limit in store %s", username, item_count, archive_item_limit, self.store); diff --git a/plugins/mod_websocket.lua b/plugins/mod_websocket.lua index 206ad678..17a91076 100644 --- a/plugins/mod_websocket.lua +++ b/plugins/mod_websocket.lua @@ -87,6 +87,7 @@ local function session_close(session, reason) end end end + stream_error = tostring(stream_error); log("debug", "Disconnecting client, <stream:error> is: %s", stream_error); session.send(stream_error); end @@ -94,28 +95,33 @@ local function session_close(session, reason) session.send(st.stanza("close", { xmlns = xmlns_framing })); function session.send() return false; end - -- luacheck: ignore 422/reason - -- FIXME reason should be handled in common place - local reason = (reason and (reason.name or reason.text or reason.condition)) or reason; - session.log("debug", "c2s stream for %s closed: %s", session.full_jid or ("<"..session.ip..">"), reason or "session closed"); + local reason_text = (reason and (reason.name or reason.text or reason.condition)) or reason; + session.log("debug", "c2s stream for %s closed: %s", session.full_jid or session.ip or "<unknown>", reason_text or "session closed"); -- Authenticated incoming stream may still be sending us stanzas, so wait for </stream:stream> from remote local conn = session.conn; - if reason == nil and not session.notopen and session.type == "c2s" then + if reason_text == nil and not session.notopen and session.type == "c2s" then -- Grace time to process data from authenticated cleanly-closed stream add_task(stream_close_timeout, function () if not session.destroyed then session.log("warn", "Failed to receive a stream close response, closing connection anyway..."); - sm_destroy_session(session, reason); - conn:write(build_close(1000, "Stream closed")); - conn:close(); + sm_destroy_session(session, reason_text); + if conn then + conn:write(build_close(1000, "Stream closed")); + conn:close(); + end end end); else - sm_destroy_session(session, reason); - conn:write(build_close(1000, "Stream closed")); - conn:close(); + sm_destroy_session(session, reason_text); + if conn then + conn:write(build_close(1000, "Stream closed")); + conn:close(); + end end + else + local reason_text = (reason and (reason.name or reason.text or reason.condition)) or reason; + sm_destroy_session(session, reason_text); end end |