aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_app.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/ejabberd_app.erl')
-rw-r--r--src/ejabberd_app.erl9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/ejabberd_app.erl b/src/ejabberd_app.erl
index 2e6d04251..b563b6f6e 100644
--- a/src/ejabberd_app.erl
+++ b/src/ejabberd_app.erl
@@ -77,6 +77,8 @@ start(_, _) ->
prep_stop(State) ->
stop_modules(),
ejabberd_admin:stop(),
+ broadcast_c2s_shutdown(),
+ timer:sleep(5000),
State.
%% All the processes were killed when this function is called
@@ -198,6 +200,13 @@ add_windows_nameservers() ->
lists:foreach(fun(IPT) -> inet_db:add_ns(IPT) end, IPTs).
+broadcast_c2s_shutdown() ->
+ Children = supervisor:which_children(ejabberd_c2s_sup),
+ lists:foreach(
+ fun({_, C2SPid, _, _}) ->
+ C2SPid ! system_shutdown
+ end, Children).
+
%%%
%%% PID file
%%%