diff options
author | Evgeny Khramtsov <ekhramtsov@process-one.net> | 2019-06-17 20:49:43 +0300 |
---|---|---|
committer | Evgeny Khramtsov <ekhramtsov@process-one.net> | 2019-06-17 20:49:43 +0300 |
commit | ef3753aa86854163c32bdf3741c67ba31045ef00 (patch) | |
tree | 642e4c77d321230728e4701e0422618b00bab5c6 | |
parent | 794e19aaf193bfddbf0954c7a24f5afa17d3977d (diff) |
Generate more readable exception
-rw-r--r-- | src/gen_mod.erl | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/gen_mod.erl b/src/gen_mod.erl index 2e590d066..de2c63372 100644 --- a/src/gen_mod.erl +++ b/src/gen_mod.erl @@ -221,10 +221,13 @@ reload_module(Host, Module, NewOpts, OldOpts, Order) -> -spec update_module(binary(), module(), opts()) -> ok | {ok, pid()}. update_module(Host, Module, Opts) -> - [#ejabberd_module{opts = OldOpts, order = Order}] = - ets:lookup(ejabberd_modules, {Module, Host}), - NewOpts = maps:merge(OldOpts, Opts), - reload_module(Host, Module, NewOpts, OldOpts, Order). + case ets:lookup(ejabberd_modules, {Module, Host}) of + [#ejabberd_module{opts = OldOpts, order = Order}] -> + NewOpts = maps:merge(OldOpts, Opts), + reload_module(Host, Module, NewOpts, OldOpts, Order); + [] -> + erlang:error({module_not_loaded, Module, Host}) + end. -spec store_options(binary(), module(), opts(), integer()) -> true. store_options(Host, Module, Opts, Order) -> @@ -321,13 +324,19 @@ set_opt(Opt, Val, Opts) -> get_module_opt(global, Module, Opt) -> get_module_opt(ejabberd_config:get_myname(), Module, Opt); get_module_opt(Host, Module, Opt) -> - Opts = ets:lookup_element(ejabberd_modules, {Module, Host}, 3), - get_opt(Opt, Opts). + try ets:lookup_element(ejabberd_modules, {Module, Host}, 3) of + Opts -> get_opt(Opt, Opts) + catch _:badarg -> + erlang:error({module_not_loaded, Module, Host}) + end. -spec get_module_opt_hosts(binary(), module()) -> [binary()]. get_module_opt_hosts(Host, Module) -> - Opts = ets:lookup_element(ejabberd_modules, {Module, Host}, 3), - get_opt_hosts(Opts). + try ets:lookup_element(ejabberd_modules, {Module, Host}, 3) of + Opts -> get_opt_hosts(Opts) + catch _:badarg -> + erlang:error({module_not_loaded, Module, Host}) + end. -spec get_opt_hosts(opts()) -> [binary()]. get_opt_hosts(Opts) -> |