aboutsummaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2022-05-26 17:38:55 +0200
committerKim Alvefur <zash@zash.se>2022-05-26 17:38:55 +0200
commit8027b67f19bd54eb0d7847a77bf8d642f1d95f16 (patch)
treed8744242c8793f079f363cd0d5977e224732bcbd /plugins
parentd545540ae025b5fdb6ff2cb806b584e3db0f441a (diff)
downloadprosody-8027b67f19bd54eb0d7847a77bf8d642f1d95f16.tar.gz
prosody-8027b67f19bd54eb0d7847a77bf8d642f1d95f16.zip
mod_smacks: Fix to use current method of counting acked stanzas
Fixes #1757 These places seem to have been left since e62025f949f9 The logic around expected_h in should_ack() misbehaved, always comparing with 0 + unacked instead of acked + unacked.
Diffstat (limited to 'plugins')
-rw-r--r--plugins/mod_smacks.lua5
1 files changed, 2 insertions, 3 deletions
diff --git a/plugins/mod_smacks.lua b/plugins/mod_smacks.lua
index ce59248e..33c90ee9 100644
--- a/plugins/mod_smacks.lua
+++ b/plugins/mod_smacks.lua
@@ -143,7 +143,7 @@ local function should_ack(session, force)
if session.awaiting_ack then return end -- already waiting
if force then return force end
local queue = session.outgoing_stanza_queue;
- local expected_h = session.last_acknowledged_stanza + queue:count_unacked();
+ local expected_h = queue:count_acked() + queue:count_unacked();
local max_unacked = max_unacked_stanzas;
if session.state == "inactive" then
max_unacked = max_inactive_unacked_stanzas;
@@ -161,7 +161,7 @@ local function request_ack(session, reason)
if session.destroyed then return end -- sending something can trigger destruction
session.awaiting_ack = true;
-- expected_h could be lower than this expression e.g. more stanzas added to the queue meanwhile)
- session.last_requested_h = session.last_acknowledged_stanza + queue:count_unacked();
+ session.last_requested_h = queue:count_acked() + queue:count_unacked();
session.log("debug", "Sending <r> (inside timer, after send) from %s - #queue=%d", reason, queue:count_unacked());
if not session.delayed_ack_timer then
session.delayed_ack_timer = timer.add_task(delayed_ack_timeout, function()
@@ -223,7 +223,6 @@ end
local function wrap_session_out(session, resume)
if not resume then
session.outgoing_stanza_queue = smqueue.new(queue_size);
- session.last_acknowledged_stanza = 0;
end
add_filter(session, "stanzas/out", outgoing_stanza_filter, -999);