mod_smacks: Don't close resuming session when failed due to overflow
authorMatthew Wild <mwild1@gmail.com>
Fri, 26 Aug 2022 17:28:06 +0100
changeset 12682 5a61e1603f42
parent 12681 3b9771d496ed
child 12684 ca4abc6ab208
mod_smacks: Don't close resuming session when failed due to overflow
plugins/mod_smacks.lua
--- a/plugins/mod_smacks.lua	Fri Aug 26 17:04:15 2022 +0100
+++ b/plugins/mod_smacks.lua	Fri Aug 26 17:28:06 2022 +0100
@@ -570,9 +570,6 @@
 
 		session.log("debug", "mod_smacks resuming existing session %s...", original_session.id);
 
-		-- Update original_session with the parameters (connection, etc.) from the new session
-		sessionmanager.update_session(original_session, session);
-
 		local queue = original_session.outgoing_stanza_queue;
 		local h = tonumber(stanza.attr.h);
 
@@ -583,13 +580,17 @@
 			err = ack_errors.new("overflow");
 		end
 
-		if err or not queue:resumable() then
-			original_session.send(st.stanza("failed",
+		if err then
+			session.send(st.stanza("failed",
 				{ xmlns = xmlns_sm; h = format_h(original_session.handled_stanza_count); previd = id }));
-			original_session:close(err);
-			return false;
+			session.log("debug", "Resumption failed: %s", err);
+			return true;
 		end
 
+		-- Update original_session with the parameters (connection, etc.) from the new session
+		sessionmanager.update_session(original_session, session);
+
+		-- Inform client of successful resumption
 		original_session.send(st.stanza("resumed", { xmlns = xmlns_sm,
 			h = format_h(original_session.handled_stanza_count), previd = id }));