Mercurial > prosody-modules
changeset 2090:1796a022dd29
mod_smacks: Keep timer object around and stop it when needed (trunk only)
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 16 Mar 2016 13:29:28 +0100 |
parents | 964b3d649a36 |
children | ea95637cf041 |
files | mod_smacks/mod_smacks.lua |
diffstat | 1 files changed, 7 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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 <r> (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 <r> (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 }));