util.startup: Back out 598df17b8ebb
Broke signal handling again, such that an early s2s connection results
in libunbound catching signals and getting Prosody killed on e.g. SIGHUP
This returns to the situation where prosody --daemonize does not respond
to signals.
-- This module will "reset" the server when the client connection count drops
-- to zero. This is somewhere between a reload and a full process restart.
-- It is useful to ensure isolation between test runs, for example. It may
-- also be of use for some kinds of manual testing.
module:set_global();
local hostmanager = require "prosody.core.hostmanager";
local function do_reset()
module:log("info", "Performing reset...");
local hosts = {};
for host in pairs(prosody.hosts) do
table.insert(hosts, host);
end
module:fire_event("server-resetting");
for _, host in ipairs(hosts) do
hostmanager.deactivate(host);
hostmanager.activate(host);
module:log("info", "Reset complete");
module:fire_event("server-reset");
end
end
function module.add_host(host_module)
host_module:hook("resource-unbind", function ()
if next(prosody.full_sessions) == nil then
do_reset();
end
end);
end
local console_env = module:shared("/*/admin_shell/env");
console_env.debug_reset = {
reset = do_reset;
};