Comparison

plugins/mod_component.lua @ 7886:679746cdf3cc

mod_component: Add read timeout handler (same behaviour as c2s and s2s)
author Kim Alvefur <zash@zash.se>
date Fri, 10 Feb 2017 21:25:12 +0100
parent 7873:8d1ebb9a9b44
child 7887:93fd15b5ec1b
child 8134:b87e281a7d59
comparison
equal deleted inserted replaced
7884:60d3b53a36f7 7886:679746cdf3cc
26 local log = module._log; 26 local log = module._log;
27 27
28 local opt_keepalives = module:get_option_boolean("component_tcp_keepalives", module:get_option_boolean("tcp_keepalives", true)); 28 local opt_keepalives = module:get_option_boolean("component_tcp_keepalives", module:get_option_boolean("tcp_keepalives", true));
29 29
30 local sessions = module:shared("sessions"); 30 local sessions = module:shared("sessions");
31
32 local function keepalive(event)
33 local session = event.session;
34 if not session.notopen then
35 return event.session.send(' ');
36 end
37 end
31 38
32 function module.add_host(module) 39 function module.add_host(module)
33 if module:get_host_type() ~= "component" then 40 if module:get_host_type() ~= "component" then
34 error("Don't load mod_component manually, it should be for a component, please see http://prosody.im/doc/components", 0); 41 error("Don't load mod_component manually, it should be for a component, please see http://prosody.im/doc/components", 0);
35 end 42 end
133 module:hook("message/full", handle_stanza, -1); 140 module:hook("message/full", handle_stanza, -1);
134 module:hook("presence/full", handle_stanza, -1); 141 module:hook("presence/full", handle_stanza, -1);
135 module:hook("iq/host", handle_stanza, -1); 142 module:hook("iq/host", handle_stanza, -1);
136 module:hook("message/host", handle_stanza, -1); 143 module:hook("message/host", handle_stanza, -1);
137 module:hook("presence/host", handle_stanza, -1); 144 module:hook("presence/host", handle_stanza, -1);
138 end 145
146 module:hook("component-read-timeout", keepalive, -1);
147 end
148
149 module:hook("component-read-timeout", keepalive, -1);
139 150
140 --- Network and stream part --- 151 --- Network and stream part ---
141 152
142 local xmlns_component = 'jabber:component:accept'; 153 local xmlns_component = 'jabber:component:accept';
143 154
330 341
331 function listener.ondetach(conn) 342 function listener.ondetach(conn)
332 sessions[conn] = nil; 343 sessions[conn] = nil;
333 end 344 end
334 345
346 function listener.onreadtimeout(conn)
347 local session = sessions[conn];
348 if session then
349 return (hosts[session.host] or prosody).events.fire_event("component-read-timeout", { session = session });
350 end
351 end
352
335 module:provides("net", { 353 module:provides("net", {
336 name = "component"; 354 name = "component";
337 private = true; 355 private = true;
338 listener = listener; 356 listener = listener;
339 default_port = 5347; 357 default_port = 5347;