2 -- Copyright (C) 2008-2010 Matthew Wild
3 -- Copyright (C) 2008-2010 Waqas Hussain
5 -- This project is MIT/X11 licensed. Please see the
6 -- COPYING file in the source package for more information.
9 local use_luaevent = prosody and require "core.configmanager".get("*", "core", "use_libevent");
12 use_luaevent = pcall(require, "luaevent.core");
13 if not use_luaevent then
14 log("error", "libevent not found, falling back to select()");
21 server = require "net.server_event";
23 -- Overwrite signal.signal() because we need to ask libevent to
24 -- handle them instead
25 local ok, signal = pcall(require, "util.signal");
27 local _signal_signal = signal.signal;
28 function signal.signal(signal_id, handler)
29 if type(signal_id) == "string" then
30 signal_id = signal[signal_id:upper()];
32 if type(signal_id) ~= "number" then
33 return false, "invalid-signal";
35 return server.hook_signal(signal_id, handler);
40 server = require "net.server_select";
44 local config_get = require "core.configmanager".get;
45 local function load_config()
46 local settings = config_get("*", "core", "network_settings") or {};
48 local event_settings = {
49 ACCEPT_DELAY = settings.event_accept_retry_interval;
50 CLEAR_DELAY = settings.event_clear_interval;
51 CONNECT_TIMEOUT = settings.connect_timeout;
52 DEBUG = settings.debug;
53 HANDSHAKE_TIMEOUT = settings.ssl_handshake_timeout;
54 MAX_CONNECTIONS = settings.max_connections;
55 MAX_HANDSHAKE_ATTEMPTS = settings.max_ssl_handshake_roundtrips;
56 MAX_READ_LENGTH = settings.max_receive_buffer_size;
57 MAX_SEND_LENGTH = settings.max_send_buffer_size;
58 READ_TIMEOUT = settings.read_timeout;
59 WRITE_TIMEOUT = settings.send_timeout;
62 for k, v in pairs(event_settings) do
66 server.changesettings(settings);
70 prosody.events.add_handler("config-reloaded", load_config);
73 -- require "net.server" shall now forever return this,
74 -- ie. server_select or server_event as chosen above.