mod_muc_webchat_url: Fix default url
[prosody-modules.git] / mod_s2s_keepalive / mod_s2s_keepalive.lua
blob880d5f72396e77ecf47f16958c60760d8739884d
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.
16 end
17 end
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
22 session.sends2s " ";
23 -- If the connection is dead, this should make it time out.
24 end
25 end
26 return keepalive_interval;
27 end
29 if module.add_timer then -- 0.9
30 module:add_timer(keepalive_interval, send_pings);
31 else -- 0.8
32 local timer = require "util.timer";
33 local unloaded;
34 timer.add_task(keepalive_interval, function()
35 if not unloaded then
36 return send_pings()
37 end
38 end);
39 function module.unload()
40 unloaded = true
41 end
42 end