mirror of
https://github.com/processone/ejabberd.git
synced 2024-10-31 15:21:38 +01:00
* src/gen_mod.erl: When ejabberd is kindly stopped, don't forget
modules configuration (EJAB-706) * src/ejabberd_app.erl: Likewise SVN Revision: 1497
This commit is contained in:
parent
d22154a2d4
commit
4f1fe31627
@ -1,5 +1,9 @@
|
|||||||
2008-07-30 Badlop <badlop@process-one.net>
|
2008-07-30 Badlop <badlop@process-one.net>
|
||||||
|
|
||||||
|
* src/gen_mod.erl: When ejabberd is kindly stopped, don't forget
|
||||||
|
modules configuration (EJAB-706)
|
||||||
|
* src/ejabberd_app.erl: Likewise
|
||||||
|
|
||||||
* src/msgs/uk.msg: Fix: each string in a single line
|
* src/msgs/uk.msg: Fix: each string in a single line
|
||||||
* src/msgs/wa.msg: Likewise
|
* src/msgs/wa.msg: Likewise
|
||||||
|
|
||||||
|
@ -153,7 +153,7 @@ stop_modules() ->
|
|||||||
Modules ->
|
Modules ->
|
||||||
lists:foreach(
|
lists:foreach(
|
||||||
fun({Module, _Args}) ->
|
fun({Module, _Args}) ->
|
||||||
gen_mod:stop_module(Host, Module)
|
gen_mod:stop_module_keep_config(Host, Module)
|
||||||
end, Modules)
|
end, Modules)
|
||||||
end
|
end
|
||||||
end, ?MYHOSTS).
|
end, ?MYHOSTS).
|
||||||
|
@ -72,22 +72,34 @@ start_module(Host, Module, Opts) ->
|
|||||||
ok
|
ok
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
%% @doc Stop the module in a host, and forget its configuration.
|
||||||
stop_module(Host, Module) ->
|
stop_module(Host, Module) ->
|
||||||
|
case stop_module_keep_config(Host, Module) of
|
||||||
|
error ->
|
||||||
|
error;
|
||||||
|
ok ->
|
||||||
|
del_module_mnesia(Host, Module)
|
||||||
|
end.
|
||||||
|
|
||||||
|
%% @doc Stop the module in a host, but keep its configuration.
|
||||||
|
%% As the module configuration is kept in the Mnesia local_config table,
|
||||||
|
%% when ejabberd is restarted the module will be started again.
|
||||||
|
%% This function is useful when ejabberd is being stopped
|
||||||
|
%% and it stops all modules.
|
||||||
|
stop_module_keep_config(Host, Module) ->
|
||||||
case catch Module:stop(Host) of
|
case catch Module:stop(Host) of
|
||||||
{'EXIT', Reason} ->
|
{'EXIT', Reason} ->
|
||||||
?ERROR_MSG("~p", [Reason]);
|
?ERROR_MSG("~p", [Reason]),
|
||||||
|
error;
|
||||||
{wait, ProcList} when is_list(ProcList) ->
|
{wait, ProcList} when is_list(ProcList) ->
|
||||||
lists:foreach(fun wait_for_process/1, ProcList),
|
lists:foreach(fun wait_for_process/1, ProcList),
|
||||||
del_module_mnesia(Host, Module),
|
|
||||||
ets:delete(ejabberd_modules, {Module, Host}),
|
ets:delete(ejabberd_modules, {Module, Host}),
|
||||||
ok;
|
ok;
|
||||||
{wait, Process} ->
|
{wait, Process} ->
|
||||||
wait_for_process(Process),
|
wait_for_process(Process),
|
||||||
del_module_mnesia(Host, Module),
|
|
||||||
ets:delete(ejabberd_modules, {Module, Host}),
|
ets:delete(ejabberd_modules, {Module, Host}),
|
||||||
ok;
|
ok;
|
||||||
_ ->
|
_ ->
|
||||||
del_module_mnesia(Host, Module),
|
|
||||||
ets:delete(ejabberd_modules, {Module, Host}),
|
ets:delete(ejabberd_modules, {Module, Host}),
|
||||||
ok
|
ok
|
||||||
end.
|
end.
|
||||||
|
Loading…
Reference in New Issue
Block a user