Merge 0.10->trunk
[prosody.git] / net / server.lua
index 449632caf79da23c1a8b236cc2385c1cbe5cb773..a753a19c8056e7fb7e75c6d6c13ac3ffab0d02cd 100644 (file)
@@ -6,14 +6,13 @@
 -- COPYING file in the source package for more information.
 --
 
-local server_type = prosody and require "core.configmanager".get("*", "server") or "select";
+local server_type = prosody and require "core.configmanager".get("*", "network_backend") or "select";
 if prosody and require "core.configmanager".get("*", "use_libevent") then
        server_type = "event";
 end
 
 if server_type == "event" then
        if not pcall(require, "luaevent.core") then
-               print(log)
                log("error", "libevent not found, falling back to select()");
                server_type = "select"
        end
@@ -24,22 +23,6 @@ local set_config;
 if server_type == "event" then
        server = require "net.server_event";
 
-       -- Overwrite signal.signal() because we need to ask libevent to
-       -- handle them instead
-       local ok, signal = pcall(require, "util.signal");
-       if ok and signal then
-               local _signal_signal = signal.signal;
-               function signal.signal(signal_id, handler)
-                       if type(signal_id) == "string" then
-                               signal_id = signal[signal_id:upper()];
-                       end
-                       if type(signal_id) ~= "number" then
-                               return false, "invalid-signal";
-                       end
-                       return server.hook_signal(signal_id, handler);
-               end
-       end
-
        local defaults = {};
        for k,v in pairs(server.cfg) do
                defaults[k] = v;
@@ -82,6 +65,30 @@ else
        error("Unsupported server type")
 end
 
+-- If server.hook_signal exists, replace signal.signal()
+local has_signal, signal = pcall(require, "util.signal");
+if has_signal then
+       if server.hook_signal then
+               function signal.signal(signal_id, handler)
+                       if type(signal_id) == "string" then
+                               signal_id = signal[signal_id:upper()];
+                       end
+                       if type(signal_id) ~= "number" then
+                               return false, "invalid-signal";
+                       end
+                       return server.hook_signal(signal_id, handler);
+               end
+       else
+               server.hook_signal = signal.signal;
+       end
+else
+       if not server.hook_signal then
+               server.hook_signal = function()
+                       return false, "signal hooking not supported"
+               end
+       end
+end
+
 if prosody then
        local config_get = require "core.configmanager".get;
        local function load_config()