Software /
code /
prosody
Comparison
plugins/mod_smacks.lua @ 12068:c3790ffdf467
mod_smacks: Remove useless delay in requesting ack on resumption
Was this the last place using the delay? Nice!
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 17 Dec 2021 17:22:27 +0100 |
parent | 12067:97c377de8083 |
child | 12069:b9e08cbd032b |
comparison
equal
deleted
inserted
replaced
12067:97c377de8083 | 12068:c3790ffdf467 |
---|---|
139 end | 139 end |
140 | 140 |
141 local function request_ack_now_if_needed(session, force, reason) | 141 local function request_ack_now_if_needed(session, force, reason) |
142 if should_ack(session, force) then | 142 if should_ack(session, force) then |
143 request_ack(session, reason); | 143 request_ack(session, reason); |
144 end | |
145 end | |
146 | |
147 local function request_ack_if_needed(session, force, reason, stanza) | |
148 if should_ack(session, force) then | |
149 timer.add_task(0, function () | |
150 request_ack_now_if_needed(session, force, reason, stanza); | |
151 end); | |
152 end | |
153 | |
154 -- Trigger "smacks-ack-delayed"-event if we added new (ackable) stanzas to the outgoing queue | |
155 -- and there isn't already a timer for this event running. | |
156 -- If we wouldn't do this, stanzas added to the queue after the first "smacks-ack-delayed"-event | |
157 -- would not trigger this event (again). | |
158 local queue = session.outgoing_stanza_queue; | |
159 local max_unacked = max_unacked_stanzas; | |
160 if session.state == "inactive" then | |
161 max_unacked = max_inactive_unacked_stanzas; | |
162 end | |
163 if queue:count_unacked() > max_unacked and session.awaiting_ack and session.delayed_ack_timer == nil then | |
164 session.log("debug", "Calling ack_delayed directly (still waiting for ack)"); | |
165 ack_delayed(session, stanza); -- this is the only new stanza in the queue --> provide it to other modules | |
166 end | 144 end |
167 end | 145 end |
168 | 146 |
169 local function outgoing_stanza_filter(stanza, session) | 147 local function outgoing_stanza_filter(stanza, session) |
170 -- XXX: Normally you wouldn't have to check the xmlns for a stanza as it's | 148 -- XXX: Normally you wouldn't have to check the xmlns for a stanza as it's |
589 migrated_session_log("error", "Tried to send stanza on old session migrated by smacks resume (maybe there is a bug?): %s", tostring(stanza)); | 567 migrated_session_log("error", "Tried to send stanza on old session migrated by smacks resume (maybe there is a bug?): %s", tostring(stanza)); |
590 return false; | 568 return false; |
591 end | 569 end |
592 module:fire_event("smacks-hibernation-end", {origin = session, resumed = original_session, queue = queue:table()}); | 570 module:fire_event("smacks-hibernation-end", {origin = session, resumed = original_session, queue = queue:table()}); |
593 original_session.awaiting_ack = nil; -- Don't wait for acks from before the resumption | 571 original_session.awaiting_ack = nil; -- Don't wait for acks from before the resumption |
594 request_ack_if_needed(original_session, true, "handle_resume", nil); | 572 request_ack_now_if_needed(original_session, true, "handle_resume", nil); |
595 end | 573 end |
596 return true; | 574 return true; |
597 end | 575 end |
598 module:hook_tag(xmlns_sm2, "resume", function (session, stanza) return handle_resume(session, stanza, xmlns_sm2); end); | 576 module:hook_tag(xmlns_sm2, "resume", function (session, stanza) return handle_resume(session, stanza, xmlns_sm2); end); |
599 module:hook_tag(xmlns_sm3, "resume", function (session, stanza) return handle_resume(session, stanza, xmlns_sm3); end); | 577 module:hook_tag(xmlns_sm3, "resume", function (session, stanza) return handle_resume(session, stanza, xmlns_sm3); end); |