blob: 5964aff0b9c751d0a70d150e714e1015cf1c6e8e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
-- 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;
};
|