plugins/mod_smacks.lua
changeset 12047 48f8fa6cea7b
parent 12046 fe643b3a41f2
child 12048 9eb1a178293e
--- a/plugins/mod_smacks.lua	Mon Dec 13 21:15:06 2021 +0100
+++ b/plugins/mod_smacks.lua	Mon Dec 13 21:17:54 2021 +0100
@@ -198,14 +198,14 @@
 	-- supposed to be nil.
 	-- However, when using mod_smacks with mod_websocket, then mod_websocket's
 	-- stanzas/out filter can get called before this one and adds the xmlns.
-	if session.resending_unacked then return stanza end
 	local is_stanza = st.is_stanza(stanza) and
 		(not stanza.attr.xmlns or stanza.attr.xmlns == 'jabber:client')
 		and not stanza.name:find":";
 
-	if is_stanza then
+	if is_stanza and not stanza._cached then
 		local queue = session.outgoing_stanza_queue;
 		local cached_stanza = st.clone(stanza);
+		cached_stanza._cached = true;
 
 		if cached_stanza.name ~= "iq" and cached_stanza:get_child("delay", xmlns_delay) == nil then
 			cached_stanza = cached_stanza:tag("delay", {
@@ -600,11 +600,9 @@
 		-- to the outgoing queue again
 		local queue = original_session.outgoing_stanza_queue;
 		session.log("debug", "resending all unacked stanzas that are still queued after resume, #queue = %d", #queue);
-		session.resending_unacked = true;
 		for i=1,#queue do
 			session.send(queue[i]);
 		end
-		session.resending_unacked = nil;
 		session.log("debug", "all stanzas resent, now disabling send() in this migrated session, #queue = %d", #queue);
 		function session.send(stanza) -- luacheck: ignore 432
 			migrated_session_log("error", "Tried to send stanza on old session migrated by smacks resume (maybe there is a bug?): %s", tostring(stanza));