25
1
mirror of https://github.com/processone/ejabberd.git synced 2024-11-22 16:20:52 +01:00

Use econf:timeout() instead of econf:pos_int() wherever appropriate

This commit is contained in:
Evgeny Khramtsov 2019-07-17 22:15:56 +03:00
parent c5305c5f9a
commit d718b35d46
11 changed files with 44 additions and 41 deletions

View File

@ -286,7 +286,7 @@ init([#body{attrs = Attrs}, IP, SID]) ->
case ejabberd_c2s:start(?MODULE, Socket, [{receiver, self()}|Opts]) of case ejabberd_c2s:start(?MODULE, Socket, [{receiver, self()}|Opts]) of
{ok, C2SPid} -> {ok, C2SPid} ->
ejabberd_c2s:accept(C2SPid), ejabberd_c2s:accept(C2SPid),
Inactivity = mod_bosh_opt:max_inactivity(XMPPDomain), Inactivity = mod_bosh_opt:max_inactivity(XMPPDomain) div 1000,
MaxConcat = mod_bosh_opt:max_concat(XMPPDomain), MaxConcat = mod_bosh_opt:max_concat(XMPPDomain),
ShapedReceivers = buf_new(XMPPDomain, ?MAX_SHAPED_REQUESTS_QUEUE_LEN), ShapedReceivers = buf_new(XMPPDomain, ?MAX_SHAPED_REQUESTS_QUEUE_LEN),
State = #state{host = XMPPDomain, sid = SID, ip = IP, State = #state{host = XMPPDomain, sid = SID, ip = IP,
@ -330,7 +330,7 @@ wait_for_session(#body{attrs = Attrs} = Req, From,
Wait == 0, Hold == 0 -> erlang:timestamp(); Wait == 0, Hold == 0 -> erlang:timestamp();
true -> undefined true -> undefined
end, end,
MaxPause = mod_bosh_opt:max_pause(State#state.host), MaxPause = mod_bosh_opt:max_pause(State#state.host) div 1000,
Resp = #body{attrs = Resp = #body{attrs =
[{sid, State#state.sid}, {wait, Wait}, [{sid, State#state.sid}, {wait, Wait},
{ver, ?BOSH_VERSION}, {polling, ?DEFAULT_POLLING}, {ver, ?BOSH_VERSION}, {polling, ?DEFAULT_POLLING},

View File

@ -160,7 +160,7 @@ subscribe(Proc) ->
%%% gen_server API %%% gen_server API
%%%=================================================================== %%%===================================================================
init([]) -> init([]) ->
Ticktime = ejabberd_option:net_ticktime(), Ticktime = ejabberd_option:net_ticktime() div 1000,
Nodes = ejabberd_option:cluster_nodes(), Nodes = ejabberd_option:cluster_nodes(),
_ = net_kernel:set_net_ticktime(Ticktime), _ = net_kernel:set_net_ticktime(Ticktime),
lists:foreach(fun(Node) -> lists:foreach(fun(Node) ->

View File

@ -215,7 +215,7 @@ opt_type(modules) ->
opt_type(negotiation_timeout) -> opt_type(negotiation_timeout) ->
econf:timeout(second); econf:timeout(second);
opt_type(net_ticktime) -> opt_type(net_ticktime) ->
econf:pos_int(); econf:timeout(second);
opt_type(new_sql_schema) -> opt_type(new_sql_schema) ->
econf:bool(); econf:bool();
opt_type(oauth_access) -> opt_type(oauth_access) ->
@ -277,7 +277,7 @@ opt_type(redis_queue_type) ->
opt_type(redis_server) -> opt_type(redis_server) ->
econf:string(); econf:string();
opt_type(registration_timeout) -> opt_type(registration_timeout) ->
econf:pos_int(infinity); econf:timeout(second, infinity);
opt_type(resource_conflict) -> opt_type(resource_conflict) ->
econf:enum([setresource, closeold, closenew, acceptnew]); econf:enum([setresource, closeold, closenew, acceptnew]);
opt_type(riak_cacertfile) -> opt_type(riak_cacertfile) ->
@ -319,7 +319,7 @@ opt_type(s2s_dns_retries) ->
opt_type(s2s_dns_timeout) -> opt_type(s2s_dns_timeout) ->
econf:timeout(second, infinity); econf:timeout(second, infinity);
opt_type(s2s_max_retry_delay) -> opt_type(s2s_max_retry_delay) ->
econf:pos_int(); econf:timeout(second);
opt_type(s2s_protocol_options) -> opt_type(s2s_protocol_options) ->
econf:and_then( econf:and_then(
econf:list(econf:binary(), [unique]), econf:list(econf:binary(), [unique]),
@ -536,7 +536,7 @@ options() ->
{max_fsm_queue, undefined}, {max_fsm_queue, undefined},
{modules, []}, {modules, []},
{negotiation_timeout, timer:seconds(30)}, {negotiation_timeout, timer:seconds(30)},
{net_ticktime, 60}, {net_ticktime, timer:seconds(60)},
{new_sql_schema, ?USE_NEW_SQL_SCHEMA_DEFAULT}, {new_sql_schema, ?USE_NEW_SQL_SCHEMA_DEFAULT},
{oauth_access, none}, {oauth_access, none},
{oauth_cache_life_time, {oauth_cache_life_time,
@ -568,7 +568,7 @@ options() ->
{redis_queue_type, {redis_queue_type,
fun(Host) -> ejabberd_config:get_option({queue_type, Host}) end}, fun(Host) -> ejabberd_config:get_option({queue_type, Host}) end},
{redis_server, "localhost"}, {redis_server, "localhost"},
{registration_timeout, 600}, {registration_timeout, timer:seconds(600)},
{resource_conflict, acceptnew}, {resource_conflict, acceptnew},
{riak_cacertfile, nil}, {riak_cacertfile, nil},
{riak_password, nil}, {riak_password, nil},
@ -594,7 +594,7 @@ options() ->
{s2s_dhfile, undefined}, {s2s_dhfile, undefined},
{s2s_dns_retries, 2}, {s2s_dns_retries, 2},
{s2s_dns_timeout, timer:seconds(10)}, {s2s_dns_timeout, timer:seconds(10)},
{s2s_max_retry_delay, 300}, {s2s_max_retry_delay, timer:seconds(300)},
{s2s_protocol_options, undefined}, {s2s_protocol_options, undefined},
{s2s_queue_type, {s2s_queue_type,
fun(Host) -> ejabberd_config:get_option({queue_type, Host}) end}, fun(Host) -> ejabberd_config:get_option({queue_type, Host}) end},

View File

@ -137,11 +137,11 @@ process_auth_result(#{server := LServer, remote_server := RServer} = State,
Delay = get_delay(), Delay = get_delay(),
?WARNING_MSG("Failed to establish outbound s2s connection ~s -> ~s: " ?WARNING_MSG("Failed to establish outbound s2s connection ~s -> ~s: "
"authentication failed; bouncing for ~p seconds", "authentication failed; bouncing for ~p seconds",
[LServer, RServer, Delay]), [LServer, RServer, Delay div 1000]),
State1 = State#{on_route => bounce, stop_reason => Reason}, State1 = State#{on_route => bounce, stop_reason => Reason},
State2 = close(State1), State2 = close(State1),
State3 = bounce_queue(State2), State3 = bounce_queue(State2),
xmpp_stream_out:set_timeout(State3, timer:seconds(Delay)); xmpp_stream_out:set_timeout(State3, Delay);
process_auth_result(State, true) -> process_auth_result(State, true) ->
State. State.
@ -156,10 +156,10 @@ process_closed(#{server := LServer, remote_server := RServer} = State,
Delay = get_delay(), Delay = get_delay(),
?WARNING_MSG("Failed to establish outbound s2s connection ~s -> ~s: ~s; " ?WARNING_MSG("Failed to establish outbound s2s connection ~s -> ~s: ~s; "
"bouncing for ~p seconds", "bouncing for ~p seconds",
[LServer, RServer, format_error(Reason), Delay]), [LServer, RServer, format_error(Reason), Delay div 1000]),
State1 = State#{on_route => bounce}, State1 = State#{on_route => bounce},
State2 = bounce_queue(State1), State2 = bounce_queue(State1),
xmpp_stream_out:set_timeout(State2, timer:seconds(Delay)). xmpp_stream_out:set_timeout(State2, Delay).
handle_unexpected_info(State, Info) -> handle_unexpected_info(State, Info) ->
?WARNING_MSG("Unexpected info: ~p", [Info]), ?WARNING_MSG("Unexpected info: ~p", [Info]),

View File

@ -164,9 +164,9 @@ mod_opt_type(json) ->
mod_opt_type(max_concat) -> mod_opt_type(max_concat) ->
econf:pos_int(unlimited); econf:pos_int(unlimited);
mod_opt_type(max_inactivity) -> mod_opt_type(max_inactivity) ->
econf:pos_int(); econf:timeout(second);
mod_opt_type(max_pause) -> mod_opt_type(max_pause) ->
econf:pos_int(); econf:timeout(second);
mod_opt_type(prebind) -> mod_opt_type(prebind) ->
econf:bool(); econf:bool();
mod_opt_type(queue_type) -> mod_opt_type(queue_type) ->
@ -187,8 +187,8 @@ mod_opt_type(cache_life_time) ->
mod_options(Host) -> mod_options(Host) ->
[{json, false}, [{json, false},
{max_concat, unlimited}, {max_concat, unlimited},
{max_inactivity, 30}, {max_inactivity, timer:seconds(30)},
{max_pause, 120}, {max_pause, timer:seconds(120)},
{prebind, false}, {prebind, false},
{ram_db_type, ejabberd_config:default_ram_db(Host, ?MODULE)}, {ram_db_type, ejabberd_config:default_ram_db(Host, ?MODULE)},
{queue_type, ejabberd_option:queue_type(Host)}, {queue_type, ejabberd_option:queue_type(Host)},

View File

@ -64,7 +64,7 @@ c2s_auth_result(#{ip := {Addr, _}, lserver := LServer} = State, {false, _}, _Use
false -> false ->
BanLifetime = mod_fail2ban_opt:c2s_auth_ban_lifetime(LServer), BanLifetime = mod_fail2ban_opt:c2s_auth_ban_lifetime(LServer),
MaxFailures = mod_fail2ban_opt:c2s_max_auth_failures(LServer), MaxFailures = mod_fail2ban_opt:c2s_max_auth_failures(LServer),
UnbanTS = erlang:system_time(second) + BanLifetime, UnbanTS = current_time() + BanLifetime,
Attempts = case ets:lookup(failed_auth, Addr) of Attempts = case ets:lookup(failed_auth, Addr) of
[{Addr, N, _, _}] -> [{Addr, N, _, _}] ->
ets:insert(failed_auth, ets:insert(failed_auth,
@ -90,7 +90,7 @@ c2s_auth_result(#{ip := {Addr, _}} = State, true, _User) ->
c2s_stream_started(#{ip := {Addr, _}} = State, _) -> c2s_stream_started(#{ip := {Addr, _}} = State, _) ->
case ets:lookup(failed_auth, Addr) of case ets:lookup(failed_auth, Addr) of
[{Addr, N, TS, MaxFailures}] when N >= MaxFailures -> [{Addr, N, TS, MaxFailures}] when N >= MaxFailures ->
case TS > erlang:system_time(second) of case TS > current_time() of
true -> true ->
log_and_disconnect(State, N, TS); log_and_disconnect(State, N, TS);
false -> false ->
@ -145,7 +145,7 @@ handle_cast(_Msg, State) ->
handle_info(clean, State) -> handle_info(clean, State) ->
?DEBUG("Cleaning ~p ETS table", [failed_auth]), ?DEBUG("Cleaning ~p ETS table", [failed_auth]),
Now = erlang:system_time(second), Now = current_time(),
ets:select_delete( ets:select_delete(
failed_auth, failed_auth,
ets:fun2ms(fun({_, _, UnbanTS, _}) -> UnbanTS =< Now end)), ets:fun2ms(fun({_, _, UnbanTS, _}) -> UnbanTS =< Now end)),
@ -215,7 +215,7 @@ unban(Net, Mask) ->
log_and_disconnect(#{ip := {Addr, _}, lang := Lang} = State, Attempts, UnbanTS) -> log_and_disconnect(#{ip := {Addr, _}, lang := Lang} = State, Attempts, UnbanTS) ->
IP = misc:ip_to_list(Addr), IP = misc:ip_to_list(Addr),
UnbanDate = format_date( UnbanDate = format_date(
calendar:now_to_universal_time(seconds_to_now(UnbanTS))), calendar:now_to_universal_time(msec_to_now(UnbanTS))),
Format = ?T("Too many (~p) failed authentications " Format = ?T("Too many (~p) failed authentications "
"from this IP address (~s). The address " "from this IP address (~s). The address "
"will be unblocked at ~s UTC"), "will be unblocked at ~s UTC"),
@ -230,8 +230,9 @@ is_whitelisted(Host, Addr) ->
Access = mod_fail2ban_opt:access(Host), Access = mod_fail2ban_opt:access(Host),
acl:match_rule(Host, Access, Addr) == allow. acl:match_rule(Host, Access, Addr) == allow.
-spec seconds_to_now(non_neg_integer()) -> erlang:timestamp(). -spec msec_to_now(pos_integer()) -> erlang:timestamp().
seconds_to_now(Secs) -> msec_to_now(MSecs) ->
Secs = MSecs div 1000,
{Secs div 1000000, Secs rem 1000000, 0}. {Secs div 1000000, Secs rem 1000000, 0}.
-spec format_date(calendar:datetime()) -> iolist(). -spec format_date(calendar:datetime()) -> iolist().
@ -239,14 +240,17 @@ format_date({{Year, Month, Day}, {Hour, Minute, Second}}) ->
io_lib:format("~2..0w:~2..0w:~2..0w ~2..0w.~2..0w.~4..0w", io_lib:format("~2..0w:~2..0w:~2..0w ~2..0w.~2..0w.~4..0w",
[Hour, Minute, Second, Day, Month, Year]). [Hour, Minute, Second, Day, Month, Year]).
current_time() ->
erlang:system_time(millisecond).
mod_opt_type(access) -> mod_opt_type(access) ->
econf:acl(); econf:acl();
mod_opt_type(c2s_auth_ban_lifetime) -> mod_opt_type(c2s_auth_ban_lifetime) ->
econf:pos_int(); econf:timeout(second);
mod_opt_type(c2s_max_auth_failures) -> mod_opt_type(c2s_max_auth_failures) ->
econf:pos_int(). econf:pos_int().
mod_options(_Host) -> mod_options(_Host) ->
[{access, none}, [{access, none},
{c2s_auth_ban_lifetime, 3600}, %% one hour {c2s_auth_ban_lifetime, timer:hours(1)},
{c2s_max_auth_failures, 20}]. {c2s_max_auth_failures, 20}].

View File

@ -55,7 +55,7 @@
-record(state, -record(state,
{host :: binary(), {host :: binary(),
send_pings :: boolean(), send_pings :: boolean(),
ping_interval :: non_neg_integer(), ping_interval :: pos_integer(),
ping_ack_timeout :: undefined | non_neg_integer(), ping_ack_timeout :: undefined | non_neg_integer(),
timeout_action :: none | kill, timeout_action :: none | kill,
timers :: timers()}). timers :: timers()}).
@ -233,7 +233,7 @@ unregister_iq_handlers(Host) ->
gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_PING), gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_PING),
gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_PING). gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_PING).
-spec add_timer(jid(), non_neg_integer(), timers()) -> timers(). -spec add_timer(jid(), pos_integer(), timers()) -> timers().
add_timer(JID, Interval, Timers) -> add_timer(JID, Interval, Timers) ->
LJID = jid:tolower(JID), LJID = jid:tolower(JID),
NewTimers = case maps:find(LJID, Timers) of NewTimers = case maps:find(LJID, Timers) of
@ -242,8 +242,7 @@ add_timer(JID, Interval, Timers) ->
maps:remove(LJID, Timers); maps:remove(LJID, Timers);
_ -> Timers _ -> Timers
end, end,
TRef = erlang:start_timer(Interval * 1000, self(), TRef = erlang:start_timer(Interval, self(), {ping, JID}),
{ping, JID}),
maps:put(LJID, TRef, NewTimers). maps:put(LJID, TRef, NewTimers).
-spec del_timer(jid(), timers()) -> timers(). -spec del_timer(jid(), timers()) -> timers().
@ -260,7 +259,7 @@ depends(_Host, _Opts) ->
[]. [].
mod_opt_type(ping_interval) -> mod_opt_type(ping_interval) ->
econf:pos_int(); econf:timeout(second);
mod_opt_type(ping_ack_timeout) -> mod_opt_type(ping_ack_timeout) ->
econf:timeout(second); econf:timeout(second);
mod_opt_type(send_pings) -> mod_opt_type(send_pings) ->
@ -269,7 +268,7 @@ mod_opt_type(timeout_action) ->
econf:enum([none, kill]). econf:enum([none, kill]).
mod_options(_Host) -> mod_options(_Host) ->
[{ping_interval, 60}, [{ping_interval, timer:minutes(1)},
{ping_ack_timeout, undefined}, {ping_ack_timeout, undefined},
{send_pings, false}, {send_pings, false},
{timeout_action, none}]. {timeout_action, none}].

View File

@ -80,7 +80,7 @@ check_packet(Acc, _, _, _) ->
update(Server, JID, Dir) -> update(Server, JID, Dir) ->
StormCount = mod_pres_counter_opt:count(Server), StormCount = mod_pres_counter_opt:count(Server),
TimeInterval = mod_pres_counter_opt:interval(Server), TimeInterval = mod_pres_counter_opt:interval(Server),
TimeStamp = erlang:system_time(second), TimeStamp = erlang:system_time(millisecond),
case read(Dir) of case read(Dir) of
undefined -> undefined ->
write(Dir, write(Dir,
@ -125,7 +125,7 @@ write(K, V) -> put({pres_counter, K}, V).
mod_opt_type(count) -> mod_opt_type(count) ->
econf:pos_int(); econf:pos_int();
mod_opt_type(interval) -> mod_opt_type(interval) ->
econf:pos_int(). econf:timeout(second).
mod_options(_) -> mod_options(_) ->
[{count, 5}, {interval, 60}]. [{count, 5}, {interval, timer:seconds(60)}].

View File

@ -429,7 +429,7 @@ check_timeout(undefined) -> true;
check_timeout(Source) -> check_timeout(Source) ->
Timeout = ejabberd_option:registration_timeout(), Timeout = ejabberd_option:registration_timeout(),
if is_integer(Timeout) -> if is_integer(Timeout) ->
Priority = -erlang:system_time(second), Priority = -erlang:system_time(millisecond),
CleanPriority = Priority + Timeout, CleanPriority = Priority + Timeout,
F = fun () -> F = fun () ->
Treap = case mnesia:read(mod_register_ip, treap, write) Treap = case mnesia:read(mod_register_ip, treap, write)

View File

@ -327,9 +327,9 @@ is_my_host(LServer) ->
mod_opt_type(always_record_route) -> mod_opt_type(always_record_route) ->
econf:bool(); econf:bool();
mod_opt_type(flow_timeout_tcp) -> mod_opt_type(flow_timeout_tcp) ->
econf:pos_int(); econf:timeout(second);
mod_opt_type(flow_timeout_udp) -> mod_opt_type(flow_timeout_udp) ->
econf:pos_int(); econf:timeout(second);
mod_opt_type(record_route) -> mod_opt_type(record_route) ->
econf:sip_uri(); econf:sip_uri();
mod_opt_type(routes) -> mod_opt_type(routes) ->
@ -356,8 +356,8 @@ mod_options(Host) ->
host = Host, host = Host,
params = [{<<"lr">>, <<>>}]}, params = [{<<"lr">>, <<>>}]},
[{always_record_route, true}, [{always_record_route, true},
{flow_timeout_tcp, 120}, {flow_timeout_tcp, timer:seconds(120)},
{flow_timeout_udp, 29}, {flow_timeout_udp, timer:seconds(29)},
{record_route, Route}, {record_route, Route},
{routes, [Route]}, {routes, [Route]},
{via, []}]. {via, []}].

View File

@ -494,9 +494,9 @@ need_ob_hdrs(Contacts, _IsOutboundSupported = true) ->
get_flow_timeout(LServer, #sip_socket{type = Type}) -> get_flow_timeout(LServer, #sip_socket{type = Type}) ->
case Type of case Type of
udp -> udp ->
mod_sip_opt:flow_timeout_udp(LServer); mod_sip_opt:flow_timeout_udp(LServer) div 1000;
_ -> _ ->
mod_sip_opt:flow_timeout_tcp(LServer) mod_sip_opt:flow_timeout_tcp(LServer) div 1000
end. end.
update_table() -> update_table() ->