From 0ea107ffd060dbc1b3926e29ead3f24ce2ca6ab2 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Tue, 13 Jul 2021 15:04:34 +0200 Subject: mod_s2s: Remove connection timeout once it's no longer needed Reduces the number of left-over timers to handle after many s2s connections were started, leaving only the ones related to incomplete connections. --- plugins/mod_s2s.lua | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'plugins/mod_s2s.lua') diff --git a/plugins/mod_s2s.lua b/plugins/mod_s2s.lua index 217797df..f673e9c5 100644 --- a/plugins/mod_s2s.lua +++ b/plugins/mod_s2s.lua @@ -17,6 +17,7 @@ local t_insert = table.insert; local traceback = debug.traceback; local add_task = require "util.timer".add_task; +local stop_timer = require "util.timer".stop; local st = require "util.stanza"; local initialize_filters = require "util.filters".initialize; local nameprep = require "util.encodings".stringprep.nameprep; @@ -305,6 +306,11 @@ function mark_connected(session) session.sendq = nil; end end + + if session.connect_timeout then + stop_timer(session.connect_timeout); + session.connect_timeout = nil; + end end function make_authenticated(event) @@ -612,6 +618,11 @@ local function session_close(session, reason, remote_reason, bounce_reason) conn:resume_writes(); + if session.connect_timeout then + stop_timer(session.connect_timeout); + session.connect_timeout = nil; + end + -- Authenticated incoming stream may still be sending us stanzas, so wait for from remote if reason == nil and not session.notopen and session.direction == "incoming" then add_task(stream_close_timeout, function () @@ -706,7 +717,7 @@ local function initialize_session(session) module:fire_event("s2s-created", { session = session }); - add_task(connect_timeout, function () + session.connect_timeout = add_task(connect_timeout, function () if session.type == "s2sin" or session.type == "s2sout" then return; -- Ok, we're connected elseif session.type == "s2s_destroyed" then -- cgit v1.2.3