# HG changeset patch # User Kim Alvefur # Date 1486758856 -3600 # Node ID 93fd15b5ec1b97ba7c25820f6814b46da62b721f # Parent 236b5a6154b2ad3af925ba703b3accf11babaf99# Parent 679746cdf3cc6f833c07b99de1f7f9a8bc0dfba1 Merge 0.10->trunk diff -r 236b5a6154b2 -r 93fd15b5ec1b plugins/mod_component.lua --- a/plugins/mod_component.lua Sat Feb 04 01:08:27 2017 +0100 +++ b/plugins/mod_component.lua Fri Feb 10 21:34:16 2017 +0100 @@ -29,6 +29,13 @@ 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 @@ 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 @@ 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;