diff options
author | Kim Alvefur <zash@zash.se> | 2017-02-10 21:34:16 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2017-02-10 21:34:16 +0100 |
commit | 89a1476a741679c8b39ec5443fd921fb26f338a3 (patch) | |
tree | b94754ed8abee90a404d2914f4e02e5e7ec38310 /plugins/mod_component.lua | |
parent | 314ce335b9a3f23224237f829c9b166eeb345187 (diff) | |
parent | 380b4987ad06be51a223ab85f0a24ef567538352 (diff) | |
download | prosody-89a1476a741679c8b39ec5443fd921fb26f338a3.tar.gz prosody-89a1476a741679c8b39ec5443fd921fb26f338a3.zip |
Merge 0.10->trunk
Diffstat (limited to 'plugins/mod_component.lua')
-rw-r--r-- | plugins/mod_component.lua | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/plugins/mod_component.lua b/plugins/mod_component.lua index cf678933..a829cecb 100644 --- a/plugins/mod_component.lua +++ b/plugins/mod_component.lua @@ -29,6 +29,13 @@ local opt_keepalives = module:get_option_boolean("component_tcp_keepalives", mod local sessions = module:shared("sessions"); +local function keepalive(event) + local session = event.session; + if not session.notopen then + return event.session.send(' '); + end +end + function module.add_host(module) if module:get_host_type() ~= "component" then error("Don't load mod_component manually, it should be for a component, please see https://prosody.im/doc/components", 0); @@ -135,8 +142,12 @@ function module.add_host(module) module:hook("iq/host", handle_stanza, -1); module:hook("message/host", handle_stanza, -1); module:hook("presence/host", handle_stanza, -1); + + module:hook("component-read-timeout", keepalive, -1); end +module:hook("component-read-timeout", keepalive, -1); + --- Network and stream part --- local xmlns_component = 'jabber:component:accept'; @@ -332,6 +343,13 @@ function listener.ondetach(conn) sessions[conn] = nil; end +function listener.onreadtimeout(conn) + local session = sessions[conn]; + if session then + return (hosts[session.host] or prosody).events.fire_event("component-read-timeout", { session = session }); + end +end + module:provides("net", { name = "component"; private = true; |