mirror of
https://github.com/bjc/prosody.git
synced 2025-04-01 20:27:39 +03:00
36 lines
1,014 B
Lua
36 lines
1,014 B
Lua
-- 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;
|
|
};
|