summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2022-03-25 11:50:05 +0100
committerBadlop <badlop@process-one.net>2022-03-25 12:53:25 +0100
commitf19219f5a04b9c9478d9e887f853f9e15f7b18e0 (patch)
tree99bf942df40c82f79b1621024a9e7e4cf88f4498 /src
parentDon't define restart and stop in ejabberd_ctl, use the corresponding commands (diff)
Terminate ejabberd_sm before everything else to ensure sessions closing (#3641)
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_admin.erl17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/ejabberd_admin.erl b/src/ejabberd_admin.erl
index 63fac822..c79572f1 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, []).