mod_smacks: Fix #1761 by setting a flag earlier 0.12
authorKim Alvefur <zash@zash.se>
Sun, 12 Jun 2022 01:50:33 +0200
branch0.12
changeset 12553 3729a6bdb562
parent 12547 cf29bdb74c15
child 12554 12962a1001c2
child 12557 cc0ec0277813
mod_smacks: Fix #1761 by setting a flag earlier This ensures that the flag is set even if the pre-drain callback is called from send(), as would be the case if opportunistic writes are enabled.
plugins/mod_smacks.lua
--- a/plugins/mod_smacks.lua	Thu Jun 09 12:42:57 2022 +0100
+++ b/plugins/mod_smacks.lua	Sun Jun 12 01:50:33 2022 +0200
@@ -156,9 +156,9 @@
 local function request_ack(session, reason)
 	local queue = session.outgoing_stanza_queue;
 	session.log("debug", "Sending <r> (inside timer, before send) from %s - #queue=%d", reason, queue:count_unacked());
+	session.awaiting_ack = true;
 	(session.sends2s or session.send)(st.stanza("r", { xmlns = session.smacks }))
 	if session.destroyed then return end -- sending something can trigger destruction
-	session.awaiting_ack = true;
 	-- expected_h could be lower than this expression e.g. more stanzas added to the queue meanwhile)
 	session.last_requested_h = queue:count_acked() + queue:count_unacked();
 	session.log("debug", "Sending <r> (inside timer, after send) from %s - #queue=%d", reason, queue:count_unacked());