IMPORTANT: due to a drive failure, as of 13-Mar-2021, the Mercurial repository had to be re-mirrored, which changed every commit SHA. The old SHAs and trees are backed up in the vault branches. Please migrate to the new branches as soon as you can.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
prosody/plugins/mod_debug_reset.lua

37 lines
1014 B

-- 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;
};