]> granicus.if.org Git - ejabberd/commitdiff
Fix some dialyzer warnings
authorEvgeny Khramtsov <ekhramtsov@process-one.net>
Sun, 9 Sep 2018 06:59:08 +0000 (09:59 +0300)
committerEvgeny Khramtsov <ekhramtsov@process-one.net>
Sun, 9 Sep 2018 06:59:08 +0000 (09:59 +0300)
37 files changed:
src/ejabberd_acme.erl
src/ejabberd_auth.erl
src/ejabberd_auth_anonymous.erl
src/ejabberd_auth_ldap.erl
src/ejabberd_auth_pam.erl
src/ejabberd_auth_sql.erl
src/ejabberd_c2s.erl
src/ejabberd_captcha.erl
src/ejabberd_commands.erl
src/ejabberd_config.erl
src/ejabberd_ctl.erl
src/ejabberd_http.erl
src/ejabberd_oauth.erl
src/ejabberd_oauth_rest.erl
src/ejabberd_pkix.erl
src/ejabberd_rdbms.erl
src/ejabberd_redis_sup.erl
src/ejabberd_riak_sup.erl
src/ejabberd_router.erl
src/ejabberd_s2s.erl
src/ejabberd_s2s_in.erl
src/ejabberd_s2s_out.erl
src/ejabberd_service.erl
src/ejabberd_shaper.erl
src/ejabberd_sm.erl
src/ejabberd_sql.erl
src/ejabberd_sql_sup.erl
src/ejabberd_web_admin.erl
src/eldap_utils.erl
src/ext_mod.erl
src/gen_iq_handler.erl
src/gen_mod.erl
src/mod_bosh.erl
src/mod_carboncopy.erl
src/mod_multicast.erl
src/mod_register.erl
src/rest.erl

index 6c503f205e1e193a83ea274d78a4545577a3bce3..4145b0a4f392bd77020684fe63049d08c625f8eb 100644 (file)
@@ -1222,8 +1222,7 @@ generate_key() ->
 %% Option Parsing Code
 %%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec opt_type(acme) -> fun((acme_config()) -> (acme_config()));
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(acme) ->
     fun(L) ->
            lists:map(
index 92c08025933be62e74f4f6552ae810ed3373faf4..5659ee3891461c10654843fb2575aaa3b20e3fbe 100644 (file)
@@ -851,13 +851,7 @@ import(Server, {sql, _}, riak, <<"users">>, Fields) ->
 import(_LServer, {sql, _}, sql, <<"users">>, _) ->
     ok.
 
--spec opt_type(auth_method) -> fun((atom() | [atom()]) -> [atom()]);
-             (auth_password_format) -> fun((plain | scram) -> plain | scram);
-             (auth_use_cache) -> fun((boolean()) -> boolean());
-             (auth_cache_missed) -> fun((boolean()) -> boolean());
-             (auth_cache_life_time) -> fun((timeout()) -> timeout());
-             (auth_cache_size) -> fun((timeout()) -> timeout());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(auth_method) ->
     fun (V) when is_list(V) ->
            lists:map(fun(M) -> ejabberd_config:v_db(?MODULE, M) end, V);
index e3be79a4398f21227d9df330b9dfc98893c8e476..3c4993cb048a5b151b5a27fc61cd753a38e3646b 100644 (file)
@@ -177,10 +177,7 @@ plain_password_required(_) ->
 store_type(_) ->
     external.
 
--spec opt_type(allow_multiple_connection) -> fun((boolean()) -> boolean());
-             (anonymous_protocol) -> fun((sasl_anon | login_anon | both) ->
-                                                sasl_anon | login_anon | both);
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(allow_multiple_connections) ->
     fun (V) when is_boolean(V) -> V end;
 opt_type(anonymous_protocol) ->
index 5f5fad3fb3d2c76af89085052f29bc1e05d4356f..b23b1c3407ff3b4340b21f4173455579997b23f1 100644 (file)
@@ -362,10 +362,7 @@ parse_options(Host) ->
           sfilter = SearchFilter, lfilter = LocalFilter,
           dn_filter = DNFilter, dn_filter_attrs = DNFilterAttrs}.
 
--spec opt_type(ldap_dn_filter) -> fun(([{binary(), binary()}]) ->
-                                      [{binary(), binary()}]);
-             (ldap_local_filter) -> fun((any()) -> any());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(ldap_dn_filter) ->
     fun ([{DNF, DNFA}]) ->
            NewDNFA = case DNFA of
index bc5a0ea2584001d3fc2983a14ab8f15aed43c2c9..71b745df0368714ea3aeababdbaaae8217196c8a 100644 (file)
@@ -82,9 +82,7 @@ get_pam_service(Host) ->
 get_pam_userinfotype(Host) ->
     ejabberd_config:get_option({pam_userinfotype, Host}, username).
 
--spec opt_type(pam_service) -> fun((binary()) -> binary());
-             (pam_userinfotype) -> fun((username | jid) -> username | jid);
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(pam_service) -> fun iolist_to_binary/1;
 opt_type(pam_userinfotype) ->
     fun (username) -> username;
index 4d1cf0667090f84a26181a17988852bf048e64f0..4b774642a763297b430766eb7b851d414f2f1c28 100644 (file)
@@ -324,8 +324,7 @@ export(_Server) ->
               []
       end}].
 
--spec opt_type(pgsql_users_number_estimate) -> fun((boolean()) -> boolean());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(pgsql_users_number_estimate) ->
     fun (V) when is_boolean(V) -> V end;
 opt_type(_) -> [pgsql_users_number_estimate].
index c782cb29037771d371eeb47f660ac4c5d559816a..76166db9e7cbc66062d482b19beb6d4acb208917 100644 (file)
@@ -104,7 +104,7 @@ get_presence(Ref) ->
 set_presence(Ref, Pres) ->
     call(Ref, {set_presence, Pres}, 1000).
 
--spec resend_presence(pid()) -> ok.
+-spec resend_presence(pid()) -> boolean().
 resend_presence(Pid) ->
     resend_presence(Pid, undefined).
 
@@ -946,7 +946,7 @@ format_reason(_, {shutdown, _}) ->
 format_reason(_, _) ->
     <<"internal server error">>.
 
--spec get_certfile(binary()) -> file:filename_all().
+-spec get_certfile(binary()) -> file:filename_all() | undefined.
 get_certfile(LServer) ->
     case ejabberd_pkix:get_certfile(LServer) of
        {ok, CertFile} ->
@@ -960,15 +960,7 @@ get_certfile(LServer) ->
 transform_listen_option(Opt, Opts) ->
     [Opt|Opts].
 
--type resource_conflict() :: setresource | closeold | closenew | acceptnew.
--spec opt_type(c2s_ciphers) -> fun((binary()) -> binary());
-             (c2s_dhfile) -> fun((binary()) -> binary());
-             (c2s_cafile) -> fun((binary()) -> binary());
-             (c2s_protocol_options) -> fun(([binary()]) -> binary());
-             (c2s_tls_compression) -> fun((boolean()) -> boolean());
-             (resource_conflict) -> fun((resource_conflict()) -> resource_conflict());
-             (disable_sasl_mechanisms) -> fun((binary() | [binary()]) -> [binary()]);
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(c2s_ciphers) -> fun iolist_to_binary/1;
 opt_type(c2s_dhfile) -> fun misc:try_read_file/1;
 opt_type(c2s_cafile) -> fun misc:try_read_file/1;
@@ -994,26 +986,7 @@ opt_type(_) ->
      c2s_protocol_options, c2s_tls_compression, resource_conflict,
      disable_sasl_mechanisms].
 
--spec listen_opt_type(access) -> fun((any()) -> any());
-                    (shaper) -> fun((any()) -> any());
-                    (certfile) -> fun((binary()) -> binary());
-                    (ciphers) -> fun((binary()) -> binary());
-                    (dhfile) -> fun((binary()) -> binary());
-                    (cafile) -> fun((binary()) -> binary());
-                    (protocol_options) -> fun(([binary()]) -> binary());
-                    (tls_compression) -> fun((boolean()) -> boolean());
-                    (tls) -> fun((boolean()) -> boolean());
-                    (starttls) -> fun((boolean()) -> boolean());
-                    (tls_verify) -> fun((boolean()) -> boolean());
-                    (zlib) -> fun((boolean()) -> boolean());
-                    (supervisor) -> fun((boolean()) -> boolean());
-                    (max_stanza_size) -> fun((timeout()) -> timeout());
-                    (max_fsm_queue) -> fun((timeout()) -> timeout());
-                    (stream_management) -> fun((boolean()) -> boolean());
-                    (inet) -> fun((boolean()) -> boolean());
-                    (inet6) -> fun((boolean()) -> boolean());
-                    (backlog) -> fun((timeout()) -> timeout());
-                    (atom()) -> [atom()].
+-spec listen_opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 listen_opt_type(access) -> fun acl:access_rules_validator/1;
 listen_opt_type(shaper) -> fun acl:shaper_rules_validator/1;
 listen_opt_type(certfile = Opt) ->
index f366b41753fecfbcabec2ec4b5ab5834b1136a54..209c68fa40d87bb19dc2e8688a05a25856bb7349 100644 (file)
@@ -591,10 +591,7 @@ callback(_, _, _) ->
 now_priority() ->
     -p1_time_compat:system_time(micro_seconds).
 
--spec opt_type(captcha_cmd) -> fun((binary()) -> binary());
-             (captcha_host) -> fun((binary()) -> binary());
-             (captcha_limit) -> fun((pos_integer()) -> pos_integer());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(captcha_cmd) ->
     fun (FileName) ->
            F = iolist_to_binary(FileName), if F /= <<"">> -> F end
index 7a3bd98d03ac54f633e0d59343de15cf7714ed35..56a1518e42df9c5eda68d34145bf250b2fdc3c37 100644 (file)
@@ -619,9 +619,7 @@ permission_addon() ->
       [{access, ejabberd_config:get_option(commands_admin_access, none)}],
       {get_exposed_commands(), []}}}].
 
--spec opt_type(commands_admin_access) -> fun((any()) -> any());
-             (commands) -> fun((list()) -> list());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(commands_admin_access) -> fun acl:access_rules_validator/1;
 opt_type(commands) ->
     fun(V) when is_list(V) -> V end;
index f34c876eb5ab57c629f8e702cba6bdf2b34bcb54..6146695c20e56edd146885482aff101bfdf2f549 100644 (file)
@@ -60,7 +60,7 @@
 -include_lib("kernel/include/inet.hrl").
 -include_lib("stdlib/include/ms_transform.hrl").
 
--callback opt_type(atom()) -> function() | [atom()].
+-callback opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 -type bad_option() :: invalid_option | unknown_option.
 
 -spec start() -> ok | {error, bad_option()}.
@@ -1439,22 +1439,7 @@ emit_deprecation_warning(Module, NewModule) ->
 now_to_seconds({MegaSecs, Secs, _MicroSecs}) ->
     MegaSecs * 1000000 + Secs.
 
--spec opt_type(hide_sensitive_log_data) -> fun((boolean()) -> boolean());
-             (hosts) -> fun(([binary()]) -> [binary()]);
-             (language) -> fun((binary()) -> binary());
-             (max_fsm_queue) -> fun((pos_integer()) -> pos_integer());
-             (default_db) -> fun((atom()) -> atom());
-             (default_ram_db) -> fun((atom()) -> atom());
-             (loglevel) -> fun((0..5) -> 0..5);
-             (queue_dir) -> fun((binary()) -> binary());
-             (queue_type) -> fun((ram | file) -> ram | file);
-             (use_cache) -> fun((boolean()) -> boolean());
-             (cache_size) -> fun((timeout()) -> timeout());
-             (cache_missed) -> fun((boolean()) -> boolean());
-             (cache_life_time) -> fun((timeout()) -> timeout());
-             (shared_key) -> fun((binary()) -> binary());
-             (node_start) -> fun((non_neg_integer()) -> non_neg_integer());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(hide_sensitive_log_data) ->
     fun (H) when is_boolean(H) -> H end;
 opt_type(hosts) ->
index f5d51036ed17b959e41a10b2640cd0257cc7709e..c716495629e56f588d949d11aac355e2df9afc96 100644 (file)
@@ -874,8 +874,7 @@ print(Format, Args) ->
 %%    ["aaaa bbb ccc"].
 
 
--spec opt_type(ejabberdctl_access_commands) -> fun((list()) -> list());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(ejabberdctl_access_commands) ->
     fun (V) when is_list(V) -> V end;
 opt_type(_) -> [ejabberdctl_access_commands].
index 7ce936d153e176818f3cce2662d96e10ed75b2c5..db9182cd8856414feede9017ba46eef2e398b54d 100644 (file)
@@ -949,8 +949,7 @@ transform_listen_option({request_handlers, Hs}, Opts) ->
 transform_listen_option(Opt, Opts) ->
     [Opt|Opts].
 
--spec opt_type(trusted_proxies) -> fun((all | [binary()]) -> all | [binary()]);
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(trusted_proxies) ->
     fun (all) -> all;
         (TPs) -> lists:filtermap(
@@ -963,23 +962,7 @@ opt_type(trusted_proxies) ->
     end;
 opt_type(_) -> [trusted_proxies].
 
--spec listen_opt_type(tls) -> fun((boolean()) -> boolean());
-                    (certfile) -> fun((binary()) -> binary());
-                    (ciphers) -> fun((binary()) -> binary());
-                    (dhfile) -> fun((binary()) -> binary());
-                    (protocol_options) -> fun(([binary()]) -> binary());
-                    (tls_compression) -> fun((boolean()) -> boolean());
-                    (captcha) -> fun((boolean()) -> boolean());
-                    (register) -> fun((boolean()) -> boolean());
-                    (web_admin) -> fun((boolean()) -> boolean());
-                    (http_bind) -> fun((boolean()) -> boolean());
-                    (xmlrpc) -> fun((boolean()) -> boolean());
-                    (request_handlers) -> fun(([{binary(), atom()}]) ->
-                                               [{binary(), atom()}]);
-                    (default_host) -> fun((binary()) -> binary());
-                    (custom_headers) -> fun(([{binary(), binary()}]) ->
-                                             [{binary(), binary()}]);
-                    (atom()) -> [atom()].
+-spec listen_opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 listen_opt_type(tls) ->
     fun(B) when is_boolean(B) -> B end;
 listen_opt_type(certfile = Opt) ->
index 5f7818cf3bfe2c8a1a45c0e698a08ff76f4f593c..fbd3113354ccba2e2c3ff5d06b710dbec93e3168 100644 (file)
@@ -646,14 +646,7 @@ logo() ->
            <<>>
     end.
 
--spec opt_type(oauth_expire) -> fun((non_neg_integer()) -> non_neg_integer());
-             (oauth_access) -> fun((any()) -> any());
-             (oauth_db_type) -> fun((atom()) -> atom());
-             (oauth_cache_life_time) -> fun((timeout()) -> timeout());
-             (oauth_cache_size) -> fun((timeout()) -> timeout());
-             (oauth_use_cache) -> fun((boolean()) -> boolean());
-             (oauth_cache_misse) -> fun((boolean()) -> boolean());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(oauth_expire) ->
     fun(I) when is_integer(I), I >= 0 -> I end;
 opt_type(oauth_access) ->
index 6e2e92218b6859029264c22fa0c967f86f8975cd..151946d30e9abc6e2b2d7278eb8c6311967ff952 100644 (file)
@@ -92,8 +92,7 @@ path(Path) ->
     <<Base/binary, "/", Path/binary>>.
 
 
--spec opt_type(ext_api_path_oauth) -> fun((binary()) -> binary());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(ext_api_path_oauth) ->
     fun (X) -> iolist_to_binary(X) end;
 opt_type(_) -> [ext_api_path_oauth].
index 002a98917a6a9c9289ef4a9a56ade64e943693b7..f8c3483d38166d049858dc33ffe191360ca8be6d 100644 (file)
 %%%===================================================================
 %%% API
 %%%===================================================================
--spec add_certfile(filename:filename())
+-spec add_certfile(file:filename())
       -> ok | {error, cert_error() | file:posix()}.
 add_certfile(Path) ->
     gen_server:call(?MODULE, {add_certfile, prep_path(Path)}).
 
--spec try_certfile(filename:filename()) -> binary().
+-spec try_certfile(file:filename()) -> binary().
 try_certfile(Path0) ->
     Path = prep_path(Path0),
     case load_certfile(Path) of
@@ -885,7 +885,7 @@ get_cert_path(G, [Root|_] = Acc) ->
              end, Es)
     end.
 
--spec prep_path(filename:filename()) -> binary().
+-spec prep_path(file:filename()) -> binary().
 prep_path(Path0) ->
     case filename:pathtype(Path0) of
        relative ->
index af3950f034f45dc52dc9071835ae474eada9c99e..d2c338548708d185f7effdd0b66d94f056dfcb35 100644 (file)
@@ -108,9 +108,7 @@ needs_sql(Host) ->
         undefined -> false
     end.
 
--type sql_type() :: mysql | pgsql | sqlite | mssql | odbc.
--spec opt_type(sql_type) -> fun((sql_type()) -> sql_type());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(sql_type) ->
     fun (mysql) -> mysql;
        (pgsql) -> pgsql;
index f3dfb7e06b5c3aa1abf77e6c15c0e8072b16a4f0..bbcd114497ff67e8ac8d49e48ea086f76fa7df5f 100644 (file)
@@ -126,14 +126,7 @@ get_pool_size() ->
 iolist_to_list(IOList) ->
     binary_to_list(iolist_to_binary(IOList)).
 
--spec opt_type(redis_connect_timeout) -> fun((pos_integer()) -> pos_integer());
-             (redis_db) -> fun((non_neg_integer()) -> non_neg_integer());
-             (redis_password) -> fun((binary()) -> binary());
-             (redis_port) -> fun((0..65535) -> 0..65535);
-             (redis_server) -> fun((binary()) -> binary());
-             (redis_pool_size) -> fun((pos_integer()) -> pos_integer());
-             (redis_queue_type) -> fun((ram | file) -> ram | file);
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(redis_connect_timeout) ->
     fun (I) when is_integer(I), I > 0 -> I end;
 opt_type(redis_db) ->
index 043c5a4848e84797052d3d1a6ef440a4f82ffd84..950acbd9e8bf0713d03e3ddeba683ea83e92e33e 100644 (file)
@@ -173,14 +173,7 @@ transform_options({riak_server, {S, P}}, Opts) ->
 transform_options(Opt, Opts) ->
     [Opt|Opts].
 
--spec opt_type(riak_pool_size) -> fun((pos_integer()) -> pos_integer());
-             (riak_port) -> fun((0..65535) -> 0..65535);
-             (riak_server) -> fun((binary()) -> binary());
-             (riak_start_interval) -> fun((pos_integer()) -> pos_integer());
-             (riak_cacertfile) -> fun((binary()) -> binary());
-             (riak_username) -> fun((binary()) -> binary());
-             (riak_password) -> fun((binary()) -> binary());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(riak_pool_size) ->
     fun (N) when is_integer(N), N >= 1 -> N end;
 opt_type(riak_port) ->
index cf4bd8e42dcb9619e29134e302b12ae34a37f71c..bd9a87ce27108fd2959ca45f47907718db798516 100644 (file)
@@ -480,7 +480,7 @@ cache_opts() ->
               end,
     [{max_size, MaxSize}, {cache_missed, CacheMissed}, {life_time, LifeTime}].
 
--spec clean_cache(node()) -> ok.
+-spec clean_cache(node()) -> non_neg_integer().
 clean_cache(Node) ->
     ets_cache:filter(
       ?ROUTES_CACHE,
@@ -499,16 +499,7 @@ clean_cache(Node) ->
 clean_cache() ->
     ejabberd_cluster:eval_everywhere(?MODULE, clean_cache, [node()]).
 
--type domain_balancing() :: random | source | destination |
-                           bare_source | bare_destination.
--spec opt_type(domain_balancing) -> fun((domain_balancing()) -> domain_balancing());
-             (domain_balancing_component_number) -> fun((pos_integer()) -> pos_integer());
-             (router_db_type) -> fun((atom()) -> atom());
-             (router_use_cache) -> fun((boolean()) -> boolean());
-             (router_cache_missed) -> fun((boolean()) -> boolean());
-             (router_cache_size) -> fun((timeout()) -> timeout());
-             (router_cache_life_time) -> fun((timeout()) -> timeout());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(domain_balancing) ->
     fun (random) -> random;
        (source) -> source;
index 74234e26edc99fa30ea6a2e0f83e40c4d31ee8fb..126700f10c62974e01d3a8ce3c1c461188d3cb15 100644 (file)
@@ -708,19 +708,7 @@ get_s2s_state(S2sPid) ->
            end,
     [{s2s_pid, S2sPid} | Infos].
 
--type use_starttls() :: boolean() | optional | required | required_trusted.
--spec opt_type(route_subdomains) -> fun((s2s | local) -> s2s | local);
-             (s2s_access) -> fun((any()) -> any());
-             (s2s_ciphers) -> fun((binary()) -> binary());
-             (s2s_dhfile) -> fun((binary()) -> binary());
-             (s2s_cafile) -> fun((binary()) -> binary());
-             (s2s_protocol_options) -> fun(([binary()]) -> binary());
-             (s2s_tls_compression) -> fun((boolean()) -> boolean());
-             (s2s_use_starttls) -> fun((use_starttls()) -> use_starttls());
-             (s2s_zlib) -> fun((boolean()) -> boolean());
-             (s2s_timeout) -> fun((timeout()) -> timeout());
-             (s2s_queue_type) -> fun((ram | file) -> ram | file);
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(route_subdomains) ->
     fun (s2s) -> s2s;
        (local) -> local
index 9968e801277a7458c04ac67f5411c5c22c1b4253..62227984e8414c34f8140b5ad76ce2513d64a49c 100644 (file)
@@ -350,21 +350,7 @@ change_shaper(#{shaper := ShaperName, server_host := ServerHost} = State,
     Shaper = acl:match_rule(ServerHost, ShaperName, jid:make(RServer)),
     xmpp_stream_in:change_shaper(State, ejabberd_shaper:new(Shaper)).
 
--spec listen_opt_type(shaper) -> fun((any()) -> any());
-                    (certfile) -> fun((binary()) -> binary());
-                    (ciphers) -> fun((binary()) -> binary());
-                    (dhfile) -> fun((binary()) -> binary());
-                    (cafile) -> fun((binary()) -> binary());
-                    (protocol_options) -> fun(([binary()]) -> binary());
-                    (tls_compression) -> fun((boolean()) -> boolean());
-                    (tls) -> fun((boolean()) -> boolean());
-                    (supervisor) -> fun((boolean()) -> boolean());
-                    (max_stanza_type) -> fun((timeout()) -> timeout());
-                    (max_fsm_queue) -> fun((pos_integer()) -> pos_integer());
-                    (inet) -> fun((boolean()) -> boolean());
-                    (inet6) -> fun((boolean()) -> boolean());
-                    (backlog) -> fun((timeout()) -> timeout());
-                    (atom()) -> [atom()].
+-spec listen_opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 listen_opt_type(shaper) -> fun acl:shaper_rules_validator/1;
 listen_opt_type(certfile = Opt) ->
     fun(S) ->
index 99bc44ab8b561e2c2301565336b77a15c5e741b5..3c40d805ad0bad0dd69e5145267fc3fde311f7b1 100644 (file)
@@ -443,13 +443,7 @@ maybe_report_huge_timeout(Opt, T) when is_integer(T), T >= 1000 ->
 maybe_report_huge_timeout(_, _) ->
     ok.
 
--spec opt_type(outgoing_s2s_families) -> fun(([ipv4|ipv6]) -> [inet|inet6]);
-             (outgoing_s2s_port) -> fun((0..65535) -> 0..65535);
-             (outgoing_s2s_timeout) -> fun((timeout()) -> timeout());
-             (s2s_dns_retries) -> fun((non_neg_integer()) -> non_neg_integer());
-             (s2s_dns_timeout) -> fun((timeout()) -> timeout());
-             (s2s_max_retry_delay) -> fun((pos_integer()) -> pos_integer());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(outgoing_s2s_families) ->
     fun(Families) ->
            lists:map(
index 96478be93574476c683c00f72c94492477bda50c..c39a023ab185a5e468488dcf333baaa17b38b279 100644 (file)
@@ -281,25 +281,7 @@ transform_listen_option({host, Host, Os}, Opts) ->
 transform_listen_option(Opt, Opts) ->
     [Opt|Opts].
 
--spec listen_opt_type(access) -> fun((any()) -> any());
-                    (shaper_rule) -> fun((any()) -> any());
-                    (certfile) -> fun((binary()) -> binary());
-                    (ciphers) -> fun((binary()) -> binary());
-                    (dhfile) -> fun((binary()) -> binary());
-                    (cafile) -> fun((binary()) -> binary());
-                    (protocol_options) -> fun(([binary()]) -> binary());
-                    (tls_compression) -> fun((boolean()) -> boolean());
-                    (tls) -> fun((boolean()) -> boolean());
-                    (check_from) -> fun((boolean()) -> boolean());
-                    (password) -> fun((boolean()) -> boolean());
-                    (hosts) -> fun(([{binary(), [{password, binary()}]}]) ->
-                                          [{binary(), binary() | undefined}]);
-                    (max_stanza_type) -> fun((timeout()) -> timeout());
-                    (max_fsm_queue) -> fun((pos_integer()) -> pos_integer());
-                    (inet) -> fun((boolean()) -> boolean());
-                    (inet6) -> fun((boolean()) -> boolean());
-                    (backlog) -> fun((timeout()) -> timeout());
-                    (atom()) -> [atom()].
+-spec listen_opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 listen_opt_type(access) -> fun acl:access_rules_validator/1;
 listen_opt_type(shaper_rule) -> fun acl:shaper_rules_validator/1;
 listen_opt_type(certfile) ->
index 8b6ca4125a901a959d69a769bac8e8089ac3a62a..e42cb412173bddab5210db44326cf2b691fb689f 100644 (file)
@@ -147,7 +147,6 @@ transform_options({shaper, List}, Opts) when is_list(List) ->
 transform_options(Opt, Opts) ->
     [Opt | Opts].
 
--spec opt_type(shaper) -> fun((any()) -> any());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(shaper) -> fun(V) -> V end;
 opt_type(_) -> [shaper].
index 9e9a2d1910480937a9d32432421c4fdfc55e93fe..d9e211656eeca70d7994dfaa45efdc65abea7e4e 100644 (file)
@@ -898,7 +898,7 @@ cache_opts() ->
               end,
     [{max_size, MaxSize}, {cache_missed, CacheMissed}, {life_time, LifeTime}].
 
--spec clean_cache(node()) -> ok.
+-spec clean_cache(node()) -> non_neg_integer().
 clean_cache(Node) ->
     ets_cache:filter(
       ?SM_CACHE,
@@ -1012,12 +1012,7 @@ kick_user(User, Server, Resource) ->
 make_sid() ->
     {p1_time_compat:unique_timestamp(), self()}.
 
--spec opt_type(sm_db_type) -> fun((atom()) -> atom());
-             (sm_use_cache) -> fun((boolean()) -> boolean());
-             (sm_cache_missed) -> fun((boolean()) -> boolean());
-             (sm_cache_size) -> fun((timeout()) -> timeout());
-             (sm_cache_life_time) -> fun((timeout()) -> timeout());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(sm_db_type) -> fun(T) -> ejabberd_config:v_db(?MODULE, T) end;
 opt_type(O) when O == sm_use_cache; O == sm_cache_missed ->
     fun(B) when is_boolean(B) -> B end;
index f126cd259c8e2b360e71d7a4595acda85fdb547e..e6c5c0212862376c71068be005b702be2e69733a 100644 (file)
@@ -1116,20 +1116,7 @@ check_error({error, Why} = Err, Query) ->
 check_error(Result, _Query) ->
     Result.
 
--spec opt_type(sql_database) -> fun((binary()) -> binary());
-             (sql_keepalive_interval) -> fun((pos_integer()) -> pos_integer());
-             (sql_password) -> fun((binary()) -> binary());
-             (sql_port) -> fun((0..65535) -> 0..65535);
-             (sql_server) -> fun((binary()) -> binary());
-             (sql_username) -> fun((binary()) -> binary());
-             (sql_ssl) -> fun((boolean()) -> boolean());
-             (sql_ssl_verify) -> fun((boolean()) -> boolean());
-             (sql_ssl_certfile) -> fun((boolean()) -> boolean());
-             (sql_ssl_cafile) -> fun((boolean()) -> boolean());
-             (sql_query_timeout) -> fun((pos_integer()) -> pos_integer());
-             (sql_connect_timeout) -> fun((pos_integer()) -> pos_integer());
-             (sql_queue_type) -> fun((ram | file) -> ram | file);
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(sql_database) -> fun iolist_to_binary/1;
 opt_type(sql_keepalive_interval) ->
     fun (I) when is_integer(I), I > 0 -> I end;
index 874a9f99df4a3dc3c1615055791f8c7ebc1d3f5b..b6315c175e8cbf5a1ead199b26d7b7be8bd8b2da 100644 (file)
@@ -212,9 +212,7 @@ read_lines(Fd, File, Acc) ->
             []
     end.
 
--spec opt_type(sql_pool_size) -> fun((pos_integer()) -> pos_integer());
-             (sql_start_interval) -> fun((pos_integer()) -> pos_integer());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(sql_pool_size) ->
     fun (I) when is_integer(I), I > 0 -> I end;
 opt_type(sql_start_interval) ->
index 46c957330b5d0cb6a91f88ddbe265a6bcf23b414..c7bded027308d3a4b022b874b35db1b91abe421c 100644 (file)
@@ -2695,8 +2695,7 @@ make_menu_item(item, 3, URI, Name, Lang) ->
 %%%==================================
 
 
--spec opt_type(access_readonly) -> fun((any()) -> any());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(access_readonly) -> fun acl:access_rules_validator/1;
 opt_type(_) -> [access_readonly].
 
index ce642a77938e30f5a77d34e872c6215a8fabeb7d..d757aa31b135b1d3efc43644784af7f2ef6d655b 100644 (file)
@@ -333,24 +333,7 @@ collect_parts_bit([{?N_BIT_STRING,<<Unused,Bits/binary>>}|Rest],Acc,Uacc) ->
 collect_parts_bit([],Acc,Uacc) ->
     list_to_binary([Uacc|lists:reverse(Acc)]).
 
--type deref_aliases() :: never | searching | finding | always.
--type uids() :: binary() | {binary()} | {binary(), binary()}.
--spec opt_type(deref_aliases) -> fun((deref_aliases()) -> deref_aliases());
-             (ldap_backups) -> fun(([binary()]) -> [binary()]);
-             (ldap_base) -> fun((binary()) -> binary());
-             (ldap_deref_aliases) -> fun((deref_aliases()) -> deref_aliases());
-             (ldap_encrypt) -> fun((tls | starttls | none) -> tls | starttls | none);
-             (ldap_password) -> fun((binary()) -> binary());
-             (ldap_port) -> fun((0..65535) -> 0..65535);
-             (ldap_rootdn) -> fun((binary()) -> binary());
-             (ldap_servers) -> fun(([binary()]) -> [binary()]);
-             (ldap_tls_certfile) -> fun((binary()) -> string());
-             (ldap_tls_cacertfile) -> fun((binary()) -> string());
-             (ldap_tls_depth) -> fun((non_neg_integer()) -> non_neg_integer());
-             (ldap_tls_verify) -> fun((hard | soft | false) -> hard | soft | false);
-             (ldap_filter) -> fun((binary()) -> binary());
-             (ldap_uids) -> fun((uids()) -> uids());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(deref_aliases) ->
     fun(unspecified) -> unspecified;
        (never) -> never;
index 59cbb87b67a838084eb3e07992e3dc3cdc70a123..02165bea8e608c3fb071b5007ec25d7a4821bc00 100644 (file)
@@ -680,8 +680,7 @@ format({Key, Val}) when is_binary(Val) ->
 format({Key, Val}) -> % TODO: improve Yaml parsing
     {Key, Val}.
 
--spec opt_type(allow_contrib_modules) -> fun((boolean()) -> boolean());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(allow_contrib_modules) ->
     fun (false) -> false;
         (no) -> false;
index 49d1d8e3ecfc54e938a07a567809e213e7dddf66..f6a6744fde81342718c2b0c0e2a45c719bd1f192 100644 (file)
@@ -154,8 +154,7 @@ transform_module_options(Opts) ->
               Opt
       end, Opts).
 
--spec opt_type(iqdisc) -> fun((any()) -> no_queue);
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(iqdisc) -> fun check_type/1;
 opt_type(_) -> [iqdisc].
 
index 8d225461c398be5df734778d1a06d2c91d772765..c15b50443626ee1a7923f8ab8f6aa1015b8fe7c8 100644 (file)
@@ -928,8 +928,7 @@ is_opt_list(L) when is_list(L) ->
 is_opt_list(_) ->
     false.
 
--spec opt_type(modules) -> fun(([{atom(), list()}]) -> [{atom(), list()}]);
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(modules) ->
     fun(Mods) ->
            lists:map(
index 2aca662c19000ef73e24e3b384dd9611f56abbbb..a393597eb13b17f87f28c451fc3e2120b923ce9f 100644 (file)
@@ -253,7 +253,7 @@ cache_opts() ->
               end,
     [{max_size, MaxSize}, {cache_missed, CacheMissed}, {life_time, LifeTime}].
 
--spec clean_cache(node()) -> ok.
+-spec clean_cache(node()) -> non_neg_integer().
 clean_cache(Node) ->
     ets_cache:filter(
       ?BOSH_CACHE,
index 83bebecb7e0f12be521086013cc00e8379bcdc99..73034ec3fbb9dc6f2c5bdfb5591a2710d22bb295 100644 (file)
@@ -345,7 +345,7 @@ cache_nodes(Mod, Host) ->
        false -> ejabberd_cluster:get_nodes()
     end.
 
--spec clean_cache(node()) -> ok.
+-spec clean_cache(node()) -> non_neg_integer().
 clean_cache(Node) ->
     ets_cache:filter(
       ?CARBONCOPY_CACHE,
index 632c3d27160a406f5121da49b4dd6d332e746804..2e4241424f78fe8273272386eee1685a02c152bf 100644 (file)
@@ -51,7 +51,7 @@
                     ts :: integer()}).
 
 -record(dest, {jid_string :: binary() | none,
-              jid_jid :: xmpp:jid(),
+              jid_jid :: jid(),
               type :: to | cc | bcc,
               address :: address()}).
 
@@ -536,7 +536,7 @@ decide_action_groups(Groups) ->
 %%% Route packet
 %%%-------------------------
 
--spec route_packet(jid(), #dest{}, xmpp:stanza(), [addresses()], [addresses()]) -> 'ok'.
+-spec route_packet(jid(), #dest{}, stanza(), [addresses()], [addresses()]) -> 'ok'.
 route_packet(From, ToDest, Packet, Others, Addresses) ->
     Dests = case ToDest#dest.type of
              bcc -> [];
@@ -545,7 +545,7 @@ route_packet(From, ToDest, Packet, Others, Addresses) ->
     route_packet2(From, ToDest#dest.jid_string, Dests,
                  Packet, {Others, Addresses}).
 
--spec route_packet_multicast(jid(), binary(), xmpp:stanza(), [#dest{}], [address()], #limits{}) -> 'ok'.
+-spec route_packet_multicast(jid(), binary(), stanza(), [#dest{}], [address()], #limits{}) -> 'ok'.
 route_packet_multicast(From, ToS, Packet, Dests,
                       Addresses, Limits) ->
     Type_of_stanza = type_of_stanza(Packet),
@@ -557,7 +557,7 @@ route_packet_multicast(From, ToS, Packet, Dests,
                      Addresses)
        end, Fragmented_dests).
 
--spec route_packet2(jid(), binary(), [#dest{}], xmpp:stanza(), {[address()], [address()]} | [address()]) -> 'ok'.
+-spec route_packet2(jid(), binary(), [#dest{}], stanza(), {[address()], [address()]} | [address()]) -> 'ok'.
 route_packet2(From, ToS, Dests, Packet, Addresses) ->
     Els = case append_dests(Dests, Addresses) of
              [] ->
index ea822e3399c8610ee3847bb60787752e5397dd2a..cbc3893fdcb88bc1230c12b3c9a43d1cb469f2fc 100644 (file)
@@ -633,8 +633,7 @@ mod_options(_Host) ->
       [{subject, <<"">>},
        {body, <<"">>}]}].
 
--spec opt_type(registration_timeout) -> fun((timeout()) -> timeout());
-             (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(registration_timeout) ->
     fun (TO) when is_integer(TO), TO > 0 -> TO;
        (infinity) -> infinity;
index 6e48f07747047bcf17c7d257c4598954d54bcf8d..16fa20eb0c0ac22f0aaa943d9e9f8b1928df938a 100644 (file)
@@ -219,9 +219,7 @@ url(Server, Path, Params) ->
             url(Url, Custom++Params)
     end.
 
--spec opt_type(ext_api_http_pool_size) -> fun((pos_integer()) -> pos_integer());
-              (ext_api_url) -> fun((binary()) -> binary());
-              (atom()) -> [atom()].
+-spec opt_type(atom()) -> fun((any()) -> any()) | [atom()].
 opt_type(ext_api_http_pool_size) ->
     fun (X) when is_integer(X), X > 0 -> X end;
 opt_type(ext_api_url) ->