# HG changeset patch # User Kim Alvefur # Date 1458131368 -3600 # Node ID 1796a022dd294aa08ddd8fd8ccba4b24059b280b # Parent 964b3d649a3675360957ec4ed73cf20c9f1c3cc1 mod_smacks: Keep timer object around and stop it when needed (trunk only) diff -r 964b3d649a36 -r 1796a022dd29 mod_smacks/mod_smacks.lua --- a/mod_smacks/mod_smacks.lua Wed Mar 16 13:27:40 2016 +0100 +++ b/mod_smacks/mod_smacks.lua Wed Mar 16 13:29:28 2016 +0100 @@ -89,7 +89,7 @@ end if #queue > max_unacked_stanzas and not session.awaiting_ack then session.log("debug", "Queuing (in a moment)"); - module:add_timer(1e-06, function () + session.awaiting_ack_timer = module:add_timer(1e-06, function () if not session.awaiting_ack then session.awaiting_ack = true; session.log("debug", "Sending (after send)"); @@ -216,6 +216,9 @@ function handle_a(origin, stanza) if not origin.smacks then return; end origin.awaiting_ack = nil; + if origin.awaiting_ack_timer then + origin.awaiting_ack_timer:stop(); + end -- Remove handled stanzas from outgoing_stanza_queue --log("debug", "ACK: h=%s, last=%s", stanza.attr.h or "", origin.last_acknowledged_stanza or ""); local h = tonumber(stanza.attr.h); @@ -396,6 +399,9 @@ local session = event.session; if session.smacks then if session.awaiting_ack then + if session.awaiting_ack_timer then + session.awaiting_ack_timer:stop(); + end return false; -- Kick the session end (session.sends2s or session.send)(st.stanza("r", { xmlns = session.smacks }));