Software / code / prosody
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() |