aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-05-08 16:29:01 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-05-08 16:29:01 +0300
commit6b6d07745da368d1649f31d315e97fa4c179523d (patch)
treed9eeefd0c5a48ed77722a86e059ef6b207c00929 /src
parentState that Erlang 17.5 or higher is only supported (diff)
Split some functions in smaller ones
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_config.erl19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/ejabberd_config.erl b/src/ejabberd_config.erl
index 158ef86a7..866cb607c 100644
--- a/src/ejabberd_config.erl
+++ b/src/ejabberd_config.erl
@@ -26,6 +26,8 @@
-module(ejabberd_config).
-author('alexey@process-one.net').
+-compile(export_all).
+
-export([start/0, load_file/1, reload_file/0, read_file/1,
get_option/1, get_option/2, add_option/2, has_option/1,
get_vh_by_auth_method/1, is_file_readable/1,
@@ -179,7 +181,10 @@ read_file(File, Opts) ->
load_file(File) ->
State0 = read_file(File),
State1 = hosts_to_start(State0),
- validate_opts(State1).
+ AllMods = get_modules(),
+ init_module_db_table(AllMods),
+ ModOpts = get_modules_with_options(AllMods),
+ validate_opts(State1, ModOpts).
-spec reload_file() -> ok.
@@ -971,11 +976,12 @@ default_db(Opt, Host, Module) ->
end
end.
-get_modules_with_options() ->
+get_modules() ->
{ok, Mods} = application:get_key(ejabberd, modules),
ExtMods = [Name || {Name, _Details} <- ext_mod:installed()],
- AllMods = [?MODULE|ExtMods++Mods],
- init_module_db_table(AllMods),
+ ExtMods ++ Mods.
+
+get_modules_with_options(Modules) ->
lists:foldl(
fun(Mod, D) ->
case is_behaviour(?MODULE, Mod) orelse Mod == ?MODULE of
@@ -992,10 +998,9 @@ get_modules_with_options() ->
false ->
D
end
- end, dict:new(), AllMods).
+ end, dict:new(), Modules).
-validate_opts(#state{opts = Opts} = State) ->
- ModOpts = get_modules_with_options(),
+validate_opts(#state{opts = Opts} = State, ModOpts) ->
NewOpts = lists:filtermap(
fun(#local_config{key = {Opt, _Host}, value = Val} = In) ->
case dict:find(Opt, ModOpts) of