diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2018-07-08 20:28:11 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2018-07-08 20:28:11 +0300 |
commit | 68d12017cc514248b7ce377c0b2f54a60a479bfe (patch) | |
tree | af101f0c736767a298916ee6addda42a46308396 /src/ejabberd_config.erl | |
parent | Reload internal room's configuration when mod_muc is reloaded (diff) |
Better detection of duplicated routes/hosts
Diffstat (limited to 'src/ejabberd_config.erl')
-rw-r--r-- | src/ejabberd_config.erl | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/src/ejabberd_config.erl b/src/ejabberd_config.erl index a31651430..ca4b427d4 100644 --- a/src/ejabberd_config.erl +++ b/src/ejabberd_config.erl @@ -34,7 +34,7 @@ prepare_opt_val/4, transform_options/1, collect_options/1, convert_to_yaml/1, convert_to_yaml/2, v_db/2, env_binary_to_list/2, opt_type/1, may_hide_data/1, - is_elixir_enabled/0, v_dbs/1, v_dbs_mods/1, + is_elixir_enabled/0, v_dbs/1, v_dbs_mods/1, v_host/1, v_hosts/1, default_db/1, default_db/2, default_ram_db/1, default_ram_db/2, default_queue_type/1, queue_dir/0, fsm_limit_opts/1, use_cache/1, cache_size/1, cache_missed/1, cache_life_time/1, @@ -971,6 +971,33 @@ v_dbs_mods(Mod) -> (atom_to_binary(M, utf8))/binary>>, utf8) end, v_dbs(Mod)). +-spec v_host(binary()) -> binary(). +v_host(Host) -> + hd(v_hosts([Host])). + +-spec v_hosts([binary()]) -> [binary()]. +v_hosts(Hosts) -> + ServerHosts = get_myhosts(), + lists:foldr( + fun(Host, Acc) -> + case lists:member(Host, ServerHosts) of + true -> + ?ERROR_MSG("Failed to reuse route ~s because it's " + "already registered on a virtual host", + [Host]), + erlang:error(badarg); + false -> + case lists:member(Host, Acc) of + true -> + ?ERROR_MSG("Host ~s is defined multiple times", + [Host]), + erlang:error(badarg); + false -> + [Host|Acc] + end + end + end, [], Hosts). + -spec default_db(module()) -> atom(). default_db(Module) -> default_db(global, Module). |