1 local st
= require
"util.stanza";
3 local keepalive_servers
= module
:get_option_set("keepalive_servers");
4 local keepalive_interval
= module
:get_option_number("keepalive_interval", 60);
6 local host
= module
.host
;
8 local function send_pings()
9 for remote_domain
, session
in pairs(hosts
[host
].s2sout
) do
10 if session
.type == "s2sout" -- as opposed to _unauthed
11 and (not(keepalive_servers
) or keepalive_servers
:contains(remote_domain
)) then
12 session
.sends2s(st
.iq({ to
= remote_domain
, type = "get", from
= host
, id
= "keepalive" })
13 :tag("ping", { xmlns
= "urn:xmpp:ping" })
15 -- Note: We don't actually check if this comes back.
19 for session
in pairs(prosody
.incoming_s2s
) do
20 if session
.type == "s2sin" -- as opposed to _unauthed
21 and (not(keepalive_servers
) or keepalive_servers
:contains(session
.from_host
)) then
23 -- If the connection is dead, this should make it time out.
26 return keepalive_interval
;
29 if module
.add_timer
then -- 0.9
30 module
:add_timer(keepalive_interval
, send_pings
);
32 local timer
= require
"util.timer";
34 timer
.add_task(keepalive_interval
, function()
39 function module
.unload()