From 3c12d1a9603af01e57ba45ecef498ec8f1e7a0c6 Mon Sep 17 00:00:00 2001 From: Evgeniy Khramtsov Date: Mon, 29 Jun 2015 22:50:15 +0300 Subject: [PATCH] Do not rely on behaviour info when doing config validation --- src/ejabberd_config.erl | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/ejabberd_config.erl b/src/ejabberd_config.erl index d049e4112..43e4154d5 100644 --- a/src/ejabberd_config.erl +++ b/src/ejabberd_config.erl @@ -718,16 +718,13 @@ get_modules_with_options() -> {ok, Mods} = application:get_key(ejabberd, modules), lists:foldl( fun(Mod, D) -> - Attrs = Mod:module_info(attributes), - Behavs = proplists:get_value(behaviour, Attrs, []), - case lists:member(ejabberd_config, Behavs) or (Mod == ?MODULE) of - true -> - Opts = Mod:opt_type(''), + case catch Mod:opt_type('') of + Opts when is_list(Opts) -> lists:foldl( fun(Opt, Acc) -> dict:append(Opt, Mod, Acc) end, D, Opts); - false -> + {'EXIT', {undef, _}} -> D end end, dict:new(), [?MODULE|Mods]).