Mercurial > prosody-hg
changeset 14135:836a70deb3c9 13.0
mod_c2s: Remove timers immediately on disconnection
| author | Waqas Hussain <waqas20@gmail.com> |
|---|---|
| date | Thu, 16 Apr 2026 18:59:56 +0100 |
| parents | 041c7ff18f76 |
| children | e27d94d8f505 |
| files | plugins/mod_c2s.lua |
| diffstat | 1 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/mod_c2s.lua Thu Apr 16 18:55:53 2026 +0100 +++ b/plugins/mod_c2s.lua Thu Apr 16 18:59:56 2026 +0100 @@ -8,7 +8,9 @@ module:set_global(); -local add_task = require "prosody.util.timer".add_task; +local timer = require "prosody.util.timer"; +local add_task = timer.add_task; +local stop_task = timer.stop; local new_xmpp_stream = require "prosody.util.xmppstream".new; local nameprep = require "prosody.util.encodings".stringprep.nameprep; local sessionmanager = require "prosody.core.sessionmanager"; @@ -25,6 +27,13 @@ local log = module._log; +local function stop_session_timers(session) + if session.c2s_timeout then + stop_task(session.c2s_timeout); + session.c2s_timeout = nil; + end +end + local c2s_timeout = module:get_option_period("c2s_timeout", "5 minutes"); local stream_close_timeout = module:get_option_period("c2s_close_timeout", 5); local opt_keepalives = module:get_option_boolean("c2s_tcp_keepalives", module:get_option_boolean("tcp_keepalives", true)); @@ -214,6 +223,7 @@ local close_event_payload = { session = session, reason = reason }; module:context(session.host):fire_event("pre-session-close", close_event_payload); reason = close_event_payload.reason; + stop_session_timers(session); if session.conn then if session.notopen then session:open_stream(); @@ -427,6 +437,7 @@ local session = sessions[conn]; if session then (session.log or log)("info", "Client disconnected: %s", err or "connection closed"); + stop_session_timers(session); sm_destroy_session(session, err); session.conn = nil; sessions[conn] = nil;
