mirror of
https://github.com/processone/ejabberd.git
synced 2024-10-05 14:51:05 +02:00
Re-raise exceptions caught in gen_mod:start_module/3 (EJAB-1335)
Modules configured by the administrator normally should not be treated as optional, so a exception (error, exit, throw) to start them should not be caught and logged only. This patch re-raises a caught exception instead of ignoring the exception and inserting the module's opts on success. That way gen_mod:get_module_opt/4 should work while calling Module:start/2.
This commit is contained in:
parent
1f16e4783c
commit
c4bc0e7252
@ -66,13 +66,13 @@ start_module(Host, Module, Opts) ->
|
||||
ets:insert(ejabberd_modules,
|
||||
#ejabberd_module{module_host = {Module, Host},
|
||||
opts = Opts}),
|
||||
case catch Module:start(Host, Opts) of
|
||||
{'EXIT', Reason} ->
|
||||
try Module:start(Host, Opts)
|
||||
catch Class:Reason ->
|
||||
del_module_mnesia(Host, Module),
|
||||
ets:delete(ejabberd_modules, {Module, Host}),
|
||||
?ERROR_MSG("~p", [Reason]);
|
||||
_ ->
|
||||
ok
|
||||
?ERROR_MSG("Problem starting the module ~p for host ~p with options:~n ~p~n ~p: ~p",
|
||||
[Module, Host, Opts, Class, Reason]),
|
||||
erlang:raise(Class, Reason, erlang:get_stacktrace())
|
||||
end.
|
||||
|
||||
%% @doc Stop the module in a host, and forget its configuration.
|
||||
|
Loading…
Reference in New Issue
Block a user