Software /
code /
prosody-modules
Changeset
4981:f0fe95f9e21c
mod_s2s_smacks_timeout: Use mod_smacks to close stale s2s connections
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 03 Aug 2022 03:14:17 +0200 |
parents | 4980:da151f9af861 |
children | 4982:8a4b17e2e984 |
files | mod_s2s_smacks_timeout/README.md mod_s2s_smacks_timeout/mod_s2s_smacks_timeout.lua |
diffstat | 2 files changed, 28 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_s2s_smacks_timeout/README.md Wed Aug 03 03:14:17 2022 +0200 @@ -0,0 +1,20 @@ +# Introduction + +This module closes s2s connections when +[mod_smacks][doc:modules:mod_smacks] reports that a connection has not +received a timely acknowledgement as requested, indicating that the +connection is broken or the remote server is not responding. + +With the connection closed, the next stanza to be directed to that +server will trigger Prosody to establish a new connection, instead of +queueing it on the potentially broken connection. + +This should prevent messages from being stuck in a queue for a +potentially long time before being bounced back to the sender as +delivery failure reports. + +Normally the amount of time it takes for a broken connection to time out +is determined by TCP. + +If this is deemed sensible behavior then it will likely be merged into +Prosody itself somewhere.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_s2s_smacks_timeout/mod_s2s_smacks_timeout.lua Wed Aug 03 03:14:17 2022 +0200 @@ -0,0 +1,8 @@ +module:depends("smacks"); + +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);