Software /
code /
prosody
Changeset
13382:f70311588c77
mod_s2s: Close connection on smacks timeout
This merges the mod_s2s_smacks_timeout behavior from prosody-modules
This event is fired by mod_smacks when the connection has not responded
to an ack-request for a period of time defaulting to 30 seconds,
indicating that the connection has become stuck or non-responsive.
Closing it prevents routing further messages via this connection and
frees resources. A stuck connection may otherwise remain until for a
time determined by the OS TCP subsystem, which can be quite long.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 02 Dec 2023 20:20:05 +0100 |
parents | 13381:b7dc45d704fa |
children | 13383:091667bd2f0e |
files | CHANGES plugins/mod_s2s.lua |
diffstat | 2 files changed, 7 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/CHANGES Fri Dec 01 23:43:18 2023 +0100 +++ b/CHANGES Sat Dec 02 20:20:05 2023 +0100 @@ -55,6 +55,7 @@ - Forwarded header from RFC 7239 supported, disabled by default - mod_http_file_share now uses roles framework, affecting access from e.g. components - Intervals of mod_cron managed periodic jobs made configurable +- When mod_smacks is enabled, s2s connections not responding to ack requests are closed. ## Removed
--- a/plugins/mod_s2s.lua Fri Dec 01 23:43:18 2023 +0100 +++ b/plugins/mod_s2s.lua Sat Dec 02 20:20:05 2023 +0100 @@ -272,6 +272,12 @@ end, 100); module:hook("s2s-authenticated", make_authenticated, -1); module:hook("s2s-read-timeout", keepalive, -1); + module:hook("smacks-ack-delayed", function (event) + if event.origin.type == "s2sin" or event.origin.type == "s2sout" then + event.origin:close("connection-timeout"); + return true; + end + end, -1); module:hook_stanza("http://etherx.jabber.org/streams", "features", function (session, stanza) -- luacheck: ignore 212/stanza local limits = stanza:get_child("limits", "urn:xmpp:stream-limits:0"); if limits then