File

plugins/mod_debug_reset.lua @ 13792:4ea7bd7325be 13.0

core.portmanager: Restore use of per-host 'ssl' for SNI hosts. Fixes #1915. This was an unintentional regression, as per-host 'ssl' options became valid in 0.12 when SNI support was added for direct TLS ports. While we encourage most people to use the simpler automatic certificate selection (and it seems most do, given the overlooking of this bug), there are likely always going to be use cases for manually-configured certificates. The issue was introduced in commit 7e9ebdc75ce4 which inadvertently removed the per-host option checking for SNI.
author Kim Alvefur <zash@zash.se>
date Sat, 29 Mar 2025 22:25:19 +0100
parent 13029:8ad432953300
line wrap: on
line source

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