Comparison

plugins/mod_smacks.lua @ 12549:3729a6bdb562 0.12

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.
author Kim Alvefur <zash@zash.se>
date Sun, 12 Jun 2022 01:50:33 +0200
parent 12526:252ed01896dd
child 12550:12962a1001c2
child 12796:d7853bbc88ea
comparison
equal deleted inserted replaced
12543:cf29bdb74c15 12549:3729a6bdb562
154 end 154 end
155 155
156 local function request_ack(session, reason) 156 local function request_ack(session, reason)
157 local queue = session.outgoing_stanza_queue; 157 local queue = session.outgoing_stanza_queue;
158 session.log("debug", "Sending <r> (inside timer, before send) from %s - #queue=%d", reason, queue:count_unacked()); 158 session.log("debug", "Sending <r> (inside timer, before send) from %s - #queue=%d", reason, queue:count_unacked());
159 session.awaiting_ack = true;
159 (session.sends2s or session.send)(st.stanza("r", { xmlns = session.smacks })) 160 (session.sends2s or session.send)(st.stanza("r", { xmlns = session.smacks }))
160 if session.destroyed then return end -- sending something can trigger destruction 161 if session.destroyed then return end -- sending something can trigger destruction
161 session.awaiting_ack = true;
162 -- expected_h could be lower than this expression e.g. more stanzas added to the queue meanwhile) 162 -- expected_h could be lower than this expression e.g. more stanzas added to the queue meanwhile)
163 session.last_requested_h = queue:count_acked() + queue:count_unacked(); 163 session.last_requested_h = queue:count_acked() + queue:count_unacked();
164 session.log("debug", "Sending <r> (inside timer, after send) from %s - #queue=%d", reason, queue:count_unacked()); 164 session.log("debug", "Sending <r> (inside timer, after send) from %s - #queue=%d", reason, queue:count_unacked());
165 if not session.delayed_ack_timer then 165 if not session.delayed_ack_timer then
166 session.delayed_ack_timer = timer.add_task(delayed_ack_timeout, function() 166 session.delayed_ack_timer = timer.add_task(delayed_ack_timeout, function()