diff options
author | Paweł Chmielowski <pchmielowski@process-one.net> | 2018-12-13 13:45:45 +0300 |
---|---|---|
committer | Paweł Chmielowski <pchmielowski@process-one.net> | 2018-12-13 13:46:53 +0300 |
commit | c88a2d056968254cdb513d81e133d45484a6236a (patch) | |
tree | 938033a3e7c5dae5b1e1edefc8d5dafeacb50efe /src/ejabberd_hooks.erl | |
parent | 34ac21e66b16a82094e3ce0f6b3f61916daca0c9 (diff) |
Add code for handling deprecations of get_stacktrace()
Diffstat (limited to 'src/ejabberd_hooks.erl')
-rw-r--r-- | src/ejabberd_hooks.erl | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/ejabberd_hooks.erl b/src/ejabberd_hooks.erl index bc67b4c67..383f203cc 100644 --- a/src/ejabberd_hooks.erl +++ b/src/ejabberd_hooks.erl @@ -57,6 +57,7 @@ terminate/2]). -include("logger.hrl"). +-include("ejabberd_stacktrace.hrl"). -record(state, {}). -type local_hook() :: { Seq :: integer(), Module :: atom(), Function :: atom()}. @@ -129,14 +130,14 @@ delete_dist(Hook, Node, Module, Function, Seq) -> delete_dist(Hook, Host, Node, Module, Function, Seq) -> gen_server:call(ejabberd_hooks, {delete, Hook, Host, Node, Module, Function, Seq}). --spec delete_all_hooks() -> true. +-spec delete_all_hooks() -> true. %% @doc Primarily for testing / instrumentation delete_all_hooks() -> gen_server:call(ejabberd_hooks, {delete_all}). -spec get_handlers(atom(), binary() | global) -> [local_hook() | distributed_hook()]. -%% @doc Returns currently set handler for hook name +%% @doc Returns currently set handler for hook name get_handlers(Hookname, Host) -> gen_server:call(ejabberd_hooks, {get_handlers, Hookname, Host}). @@ -264,7 +265,7 @@ handle_delete(Hook, Host, El) -> ok; [] -> ok - end. + end. %%---------------------------------------------------------------------- %% Func: handle_cast/2 @@ -379,15 +380,11 @@ safe_apply(Hook, Module, Function, Args) -> true -> apply(Module, Function, Args) end - catch E:R when E /= exit; R /= normal -> - St = get_stacktrace(), + catch ?EX_RULE(E, R, St) when E /= exit; R /= normal -> ?ERROR_MSG("Hook ~p crashed when running ~p:~p/~p:~n" "** Reason = ~p~n" "** Arguments = ~p", [Hook, Module, Function, length(Args), - {E, R, St}, Args]), + {E, R, ?EX_STACK(St)}, Args]), 'EXIT' end. - -get_stacktrace() -> - [{Mod, Fun, Loc, Args} || {Mod, Fun, Args, Loc} <- erlang:get_stacktrace()]. |