aboutsummaryrefslogtreecommitdiff
path: root/src/mod_disco.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-04-30 19:01:47 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-04-30 19:01:47 +0300
commitfddd6110e00df12c99a20a2cc9d074f5f4f1f965 (patch)
tree366575b855f1b2013db7eeb02ecb213f81c98c1f /src/mod_disco.erl
parentMerge branch 'new-option-validation' (diff)
Don't validate an option in gen_mod:get*opt() functions
The changes are very similar to those from previous commit: * Now there is no need to pass validating function in gen_mod:get_opt() and gen_mod:get_module_opt() functions, because the modules' configuration keeps already validated values. * New functions gen_mod:get_opt/2 and gen_mod:get_module_opt/3 are introduced. * Functions gen_mod:get_opt/4 and get_module_opt/5 are deprecated. If the functions are still called, the "function" argument is simply ignored. * Validating callback Mod:listen_opt_type/1 is introduced to validate listening options at startup.
Diffstat (limited to 'src/mod_disco.erl')
-rw-r--r--src/mod_disco.erl29
1 files changed, 5 insertions, 24 deletions
diff --git a/src/mod_disco.erl b/src/mod_disco.erl
index 88c06c543..6b8263371 100644
--- a/src/mod_disco.erl
+++ b/src/mod_disco.erl
@@ -50,8 +50,7 @@
-type items_acc() :: {error, stanza_error()} | {result, [disco_item()]} | empty.
start(Host, Opts) ->
- IQDisc = gen_mod:get_opt(iqdisc, Opts, fun gen_iq_handler:check_type/1,
- one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
gen_iq_handler:add_iq_handler(ejabberd_local, Host,
?NS_DISCO_ITEMS, ?MODULE,
process_local_iq_items, IQDisc),
@@ -67,10 +66,7 @@ start(Host, Opts) ->
catch ets:new(disco_extra_domains,
[named_table, ordered_set, public,
{heir, erlang:group_leader(), none}]),
- ExtraDomains = gen_mod:get_opt(extra_domains, Opts,
- fun(Hs) ->
- [iolist_to_binary(H) || H <- Hs]
- end, []),
+ ExtraDomains = gen_mod:get_opt(extra_domains, Opts, []),
lists:foreach(fun (Domain) ->
register_extra_domain(Host, Domain)
end,
@@ -119,10 +115,7 @@ stop(Host) ->
ok.
reload(Host, NewOpts, OldOpts) ->
- case gen_mod:is_equal_opt(extra_domains, NewOpts, OldOpts,
- fun(Hs) ->
- [iolist_to_binary(H) || H <- Hs]
- end, []) of
+ case gen_mod:is_equal_opt(extra_domains, NewOpts, OldOpts, []) of
{false, NewDomains, OldDomains} ->
lists:foreach(
fun(Domain) ->
@@ -135,9 +128,7 @@ reload(Host, NewOpts, OldOpts) ->
true ->
ok
end,
- case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts,
- fun gen_iq_handler:check_type/1,
- one_queue) of
+ case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, one_queue) of
{false, IQDisc, _} ->
gen_iq_handler:add_iq_handler(ejabberd_local, Host,
?NS_DISCO_ITEMS, ?MODULE,
@@ -447,17 +438,7 @@ get_info(Acc, _, _, _Node, _) -> Acc.
-spec get_fields(binary(), module()) -> [xdata_field()].
get_fields(Host, Module) ->
- Fields = gen_mod:get_module_opt(
- Host, ?MODULE, server_info,
- fun(L) ->
- lists:map(
- fun(Opts) ->
- Mods = proplists:get_value(modules, Opts, all),
- Name = proplists:get_value(name, Opts, <<>>),
- URLs = proplists:get_value(urls, Opts, []),
- {Mods, Name, URLs}
- end, L)
- end, []),
+ Fields = gen_mod:get_module_opt(Host, ?MODULE, server_info, []),
Fields1 = lists:filter(fun ({Modules, _, _}) ->
case Modules of
all -> true;