Mercurial > prosody-hg
comparison plugins/mod_smacks.lua @ 11938:6da703cb4c04
mod_smacks: Optimize scheduling of ack requests
Taking advantage of the new callbacks added in dcf38ac6a38c and
9c450185bac1 avoids extra timers, extra syscalls and sending the `<r>`
in its own TCP segment, improving efficiency.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 24 Nov 2021 21:27:49 +0100 |
| parents | 364c3f018e3a |
| children | b78a341e72e7 |
comparison
equal
deleted
inserted
replaced
| 11937:364c3f018e3a | 11938:6da703cb4c04 |
|---|---|
| 234 if session.hibernating then | 234 if session.hibernating then |
| 235 session.log("debug", "hibernating since %s, stanza queued", datetime.datetime(session.hibernating)); | 235 session.log("debug", "hibernating since %s, stanza queued", datetime.datetime(session.hibernating)); |
| 236 module:fire_event("smacks-hibernation-stanza-queued", {origin = session, queue = queue, stanza = cached_stanza}); | 236 module:fire_event("smacks-hibernation-stanza-queued", {origin = session, queue = queue, stanza = cached_stanza}); |
| 237 return nil; | 237 return nil; |
| 238 end | 238 end |
| 239 request_ack_if_needed(session, false, "outgoing_stanza_filter", stanza); | |
| 240 end | 239 end |
| 241 return stanza; | 240 return stanza; |
| 242 end | 241 end |
| 243 | 242 |
| 244 local function count_incoming_stanzas(stanza, session) | 243 local function count_incoming_stanzas(stanza, session) |
| 650 -- Events when it's sensible to request an ack | 649 -- Events when it's sensible to request an ack |
| 651 -- Could experiment with forcing (ignoring max_unacked) <r>, but when and why? | 650 -- Could experiment with forcing (ignoring max_unacked) <r>, but when and why? |
| 652 local request_ack_events = { | 651 local request_ack_events = { |
| 653 ["csi-client-active"] = true; | 652 ["csi-client-active"] = true; |
| 654 ["csi-flushing"] = false; | 653 ["csi-flushing"] = false; |
| 654 ["c2s-pre-ondrain"] = false; | |
| 655 ["s2s-pre-ondrain"] = false; | |
| 655 }; | 656 }; |
| 656 | 657 |
| 657 for event_name, force in pairs(request_ack_events) do | 658 for event_name, force in pairs(request_ack_events) do |
| 658 module:log("info", "module:hook(%q, function)"); | 659 module:log("info", "module:hook(%q, function)"); |
| 659 module:hook(event_name, function(event) | 660 module:hook(event_name, function(event) |
