Mercurial > prosody-hg
comparison plugins/mod_s2s.lua @ 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 | b7c08f32112c |
| children | 783706350faa |
comparison
equal
deleted
inserted
replaced
| 13381:b7dc45d704fa | 13382:f70311588c77 |
|---|---|
| 270 session.outgoing_stanza_size_limit = tonumber(limits:get_child_text("max-bytes")); | 270 session.outgoing_stanza_size_limit = tonumber(limits:get_child_text("max-bytes")); |
| 271 end | 271 end |
| 272 end, 100); | 272 end, 100); |
| 273 module:hook("s2s-authenticated", make_authenticated, -1); | 273 module:hook("s2s-authenticated", make_authenticated, -1); |
| 274 module:hook("s2s-read-timeout", keepalive, -1); | 274 module:hook("s2s-read-timeout", keepalive, -1); |
| 275 module:hook("smacks-ack-delayed", function (event) | |
| 276 if event.origin.type == "s2sin" or event.origin.type == "s2sout" then | |
| 277 event.origin:close("connection-timeout"); | |
| 278 return true; | |
| 279 end | |
| 280 end, -1); | |
| 275 module:hook_stanza("http://etherx.jabber.org/streams", "features", function (session, stanza) -- luacheck: ignore 212/stanza | 281 module:hook_stanza("http://etherx.jabber.org/streams", "features", function (session, stanza) -- luacheck: ignore 212/stanza |
| 276 local limits = stanza:get_child("limits", "urn:xmpp:stream-limits:0"); | 282 local limits = stanza:get_child("limits", "urn:xmpp:stream-limits:0"); |
| 277 if limits then | 283 if limits then |
| 278 session.outgoing_stanza_size_limit = tonumber(limits:get_child_text("max-bytes")); | 284 session.outgoing_stanza_size_limit = tonumber(limits:get_child_text("max-bytes")); |
| 279 end | 285 end |
