From f19219f5a04b9c9478d9e887f853f9e15f7b18e0 Mon Sep 17 00:00:00 2001 From: Badlop Date: Fri, 25 Mar 2022 11:50:05 +0100 Subject: [PATCH] Terminate ejabberd_sm before everything else to ensure sessions closing (#3641) --- src/ejabberd_admin.erl | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/ejabberd_admin.erl b/src/ejabberd_admin.erl index 63fac8221..c79572f16 100644 --- a/src/ejabberd_admin.erl +++ b/src/ejabberd_admin.erl @@ -30,7 +30,8 @@ -export([start_link/0, %% Server - status/0, reopen_log/0, rotate_log/0, + status/0, stop/0, restart/0, + reopen_log/0, rotate_log/0, set_loglevel/1, stop_kindly/2, send_service_message_all_mucs/2, registered_vhosts/0, @@ -113,11 +114,11 @@ get_commands_spec() -> args = [], result = {res, restuple}}, #ejabberd_commands{name = stop, tags = [server], desc = "Stop ejabberd gracefully", - module = init, function = stop, + module = ?MODULE, function = stop, args = [], result = {res, rescode}}, #ejabberd_commands{name = restart, tags = [server], desc = "Restart ejabberd gracefully", - module = init, function = restart, + module = ?MODULE, function = restart, args = [], result = {res, rescode}}, #ejabberd_commands{name = reopen_log, tags = [logs], desc = "Reopen the log files after being renamed", @@ -446,6 +447,16 @@ status() -> end, {Is_running, String1 ++ String2}. +stop() -> + _ = supervisor:terminate_child(ejabberd_sup, ejabberd_sm), + timer:sleep(1000), + init:stop(). + +restart() -> + _ = supervisor:terminate_child(ejabberd_sup, ejabberd_sm), + timer:sleep(1000), + init:restart(). + reopen_log() -> ejabberd_hooks:run(reopen_log_hook, []).