aboutsummaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/mod_c2s.lua8
-rw-r--r--plugins/mod_storage_internal.lua4
-rw-r--r--plugins/mod_websocket.lua28
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