diff --git a/src/ejabberd_app.erl b/src/ejabberd_app.erl index 30f34aff4..319e494c2 100644 --- a/src/ejabberd_app.erl +++ b/src/ejabberd_app.erl @@ -53,6 +53,7 @@ start(normal, _Args) -> ejabberd_commands:init(), ejabberd_admin:start(), gen_mod:start(), + ext_mod:start(), ejabberd_config:start(), set_settings_from_config(), acl:start(), @@ -67,7 +68,6 @@ start(normal, _Args) -> %ejabberd_debug:eprof_start(), %ejabberd_debug:fprof_start(), maybe_add_nameservers(), - ext_mod:start(), ejabberd_auth:start(), start_modules(), ejabberd_listener:start_listeners(), diff --git a/src/ejabberd_config.erl b/src/ejabberd_config.erl index 5b97710a8..971d6dbd6 100644 --- a/src/ejabberd_config.erl +++ b/src/ejabberd_config.erl @@ -740,6 +740,7 @@ get_option(Opt, F, Default) -> get_modules_with_options() -> {ok, Mods} = application:get_key(ejabberd, modules), + ExtMods = [Name || {Name, _Details} <- ext_mod:installed()], lists:foldl( fun(Mod, D) -> case catch Mod:opt_type('') of @@ -751,7 +752,7 @@ get_modules_with_options() -> {'EXIT', {undef, _}} -> D end - end, dict:new(), [?MODULE|Mods]). + end, dict:new(), [?MODULE|ExtMods++Mods]). validate_opts(#state{opts = Opts} = State) -> ModOpts = get_modules_with_options(),