]> granicus.if.org Git - ejabberd/commitdiff
Use econf:timeout() instead of econf:pos_int() wherever appropriate
authorEvgeny Khramtsov <ekhramtsov@process-one.net>
Wed, 17 Jul 2019 19:15:56 +0000 (22:15 +0300)
committerEvgeny Khramtsov <ekhramtsov@process-one.net>
Wed, 17 Jul 2019 19:15:56 +0000 (22:15 +0300)
src/ejabberd_bosh.erl
src/ejabberd_cluster.erl
src/ejabberd_options.erl
src/ejabberd_s2s_out.erl
src/mod_bosh.erl
src/mod_fail2ban.erl
src/mod_ping.erl
src/mod_pres_counter.erl
src/mod_register.erl
src/mod_sip.erl
src/mod_sip_registrar.erl

index 73a82ab664ef1ef64b8e1e136aa42f66f888f4f3..d19e7aa3c8aedc2d7b401a2562a924cf924201d0 100644 (file)
@@ -286,7 +286,7 @@ init([#body{attrs = Attrs}, IP, SID]) ->
     case ejabberd_c2s:start(?MODULE, Socket, [{receiver, self()}|Opts]) of
        {ok, 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),
            ShapedReceivers = buf_new(XMPPDomain, ?MAX_SHAPED_REQUESTS_QUEUE_LEN),
            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();
                   true -> undefined
               end,
-    MaxPause = mod_bosh_opt:max_pause(State#state.host),
+    MaxPause = mod_bosh_opt:max_pause(State#state.host) div 1000,
     Resp = #body{attrs =
                     [{sid, State#state.sid}, {wait, Wait},
                      {ver, ?BOSH_VERSION}, {polling, ?DEFAULT_POLLING},
index d91f1fae099b91d31633aa534fa91709b3853652..c238efc109c7a3f5de87dacf19a6f3500cfc0d1a 100644 (file)
@@ -160,7 +160,7 @@ subscribe(Proc) ->
 %%% gen_server API
 %%%===================================================================
 init([]) ->
-    Ticktime = ejabberd_option:net_ticktime(),
+    Ticktime = ejabberd_option:net_ticktime() div 1000,
     Nodes = ejabberd_option:cluster_nodes(),
     _ = net_kernel:set_net_ticktime(Ticktime),
     lists:foreach(fun(Node) ->
index 16d3f7ba5b8d51c57b7563c721d341e3b847debc..505c20fd76727750af4aaca11333313a7a2cdbf2 100644 (file)
@@ -215,7 +215,7 @@ opt_type(modules) ->
 opt_type(negotiation_timeout) ->
     econf:timeout(second);
 opt_type(net_ticktime) ->
-    econf:pos_int();
+    econf:timeout(second);
 opt_type(new_sql_schema) ->
     econf:bool();
 opt_type(oauth_access) ->
@@ -277,7 +277,7 @@ opt_type(redis_queue_type) ->
 opt_type(redis_server) ->
     econf:string();
 opt_type(registration_timeout) ->
-    econf:pos_int(infinity);
+    econf:timeout(second, infinity);
 opt_type(resource_conflict) ->
     econf:enum([setresource, closeold, closenew, acceptnew]);
 opt_type(riak_cacertfile) ->
@@ -319,7 +319,7 @@ opt_type(s2s_dns_retries) ->
 opt_type(s2s_dns_timeout) ->
     econf:timeout(second, infinity);
 opt_type(s2s_max_retry_delay) ->
-    econf:pos_int();
+    econf:timeout(second);
 opt_type(s2s_protocol_options) ->
     econf:and_then(
       econf:list(econf:binary(), [unique]),
@@ -536,7 +536,7 @@ options() ->
      {max_fsm_queue, undefined},
      {modules, []},
      {negotiation_timeout, timer:seconds(30)},
-     {net_ticktime, 60},
+     {net_ticktime, timer:seconds(60)},
      {new_sql_schema, ?USE_NEW_SQL_SCHEMA_DEFAULT},
      {oauth_access, none},
      {oauth_cache_life_time,
@@ -568,7 +568,7 @@ options() ->
      {redis_queue_type,
       fun(Host) -> ejabberd_config:get_option({queue_type, Host}) end},
      {redis_server, "localhost"},
-     {registration_timeout, 600},
+     {registration_timeout, timer:seconds(600)},
      {resource_conflict, acceptnew},
      {riak_cacertfile, nil},
      {riak_password, nil},
@@ -594,7 +594,7 @@ options() ->
      {s2s_dhfile, undefined},
      {s2s_dns_retries, 2},
      {s2s_dns_timeout, timer:seconds(10)},
-     {s2s_max_retry_delay, 300},
+     {s2s_max_retry_delay, timer:seconds(300)},
      {s2s_protocol_options, undefined},
      {s2s_queue_type,
       fun(Host) -> ejabberd_config:get_option({queue_type, Host}) end},
index 074952df0eafbb9cb00654c567ac6ece20b75e90..57d8a626786f5fbec176c2b72a16ab5ed43baf1b 100644 (file)
@@ -137,11 +137,11 @@ process_auth_result(#{server := LServer, remote_server := RServer} = State,
     Delay = get_delay(),
     ?WARNING_MSG("Failed to establish outbound s2s connection ~s -> ~s: "
                 "authentication failed; bouncing for ~p seconds",
-                [LServer, RServer, Delay]),
+                [LServer, RServer, Delay div 1000]),
     State1 = State#{on_route => bounce, stop_reason => Reason},
     State2 = close(State1),
     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) ->
     State.
 
@@ -156,10 +156,10 @@ process_closed(#{server := LServer, remote_server := RServer} = State,
     Delay = get_delay(),
     ?WARNING_MSG("Failed to establish outbound s2s connection ~s -> ~s: ~s; "
                 "bouncing for ~p seconds",
-                [LServer, RServer, format_error(Reason), Delay]),
+                [LServer, RServer, format_error(Reason), Delay div 1000]),
     State1 = State#{on_route => bounce},
     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) ->
     ?WARNING_MSG("Unexpected info: ~p", [Info]),
index 5ed3d5e8d762156ea3877866655788737c4b8e88..9803e941cf9a23b1587ec36ed44de57caa9d1dd6 100644 (file)
@@ -164,9 +164,9 @@ mod_opt_type(json) ->
 mod_opt_type(max_concat) ->
     econf:pos_int(unlimited);
 mod_opt_type(max_inactivity) ->
-    econf:pos_int();
+    econf:timeout(second);
 mod_opt_type(max_pause) ->
-    econf:pos_int();
+    econf:timeout(second);
 mod_opt_type(prebind) ->
     econf:bool();
 mod_opt_type(queue_type) ->
@@ -187,8 +187,8 @@ mod_opt_type(cache_life_time) ->
 mod_options(Host) ->
     [{json, false},
      {max_concat, unlimited},
-     {max_inactivity, 30},
-     {max_pause, 120},
+     {max_inactivity, timer:seconds(30)},
+     {max_pause, timer:seconds(120)},
      {prebind, false},
      {ram_db_type, ejabberd_config:default_ram_db(Host, ?MODULE)},
      {queue_type, ejabberd_option:queue_type(Host)},
index 1647f69bbc644ac9545868f804e3ba0f7f3e7b0c..9bf5ebfeba30e64dad3615c8c3810f7ea8f304d7 100644 (file)
@@ -64,7 +64,7 @@ c2s_auth_result(#{ip := {Addr, _}, lserver := LServer} = State, {false, _}, _Use
        false ->
            BanLifetime = mod_fail2ban_opt:c2s_auth_ban_lifetime(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
                [{Addr, N, _, _}] ->
                               ets:insert(failed_auth,
@@ -90,7 +90,7 @@ c2s_auth_result(#{ip := {Addr, _}} = State, true, _User) ->
 c2s_stream_started(#{ip := {Addr, _}} = State, _) ->
     case ets:lookup(failed_auth, Addr) of
        [{Addr, N, TS, MaxFailures}] when N >= MaxFailures ->
-           case TS > erlang:system_time(second) of
+           case TS > current_time() of
                true ->
                    log_and_disconnect(State, N, TS);
                false ->
@@ -145,7 +145,7 @@ handle_cast(_Msg, State) ->
 
 handle_info(clean, State) ->
     ?DEBUG("Cleaning ~p ETS table", [failed_auth]),
-    Now = erlang:system_time(second),
+    Now = current_time(),
     ets:select_delete(
       failed_auth,
       ets:fun2ms(fun({_, _, UnbanTS, _}) -> UnbanTS =< Now end)),
@@ -215,7 +215,7 @@ unban(Net, Mask) ->
 log_and_disconnect(#{ip := {Addr, _}, lang := Lang} = State, Attempts, UnbanTS) ->
     IP = misc:ip_to_list(Addr),
     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 "
                "from this IP address (~s). The address "
                "will be unblocked at ~s UTC"),
@@ -230,8 +230,9 @@ is_whitelisted(Host, Addr) ->
     Access = mod_fail2ban_opt:access(Host),
     acl:match_rule(Host, Access, Addr) == allow.
 
--spec seconds_to_now(non_neg_integer()) -> erlang:timestamp().
-seconds_to_now(Secs) ->
+-spec msec_to_now(pos_integer()) -> erlang:timestamp().
+msec_to_now(MSecs) ->
+    Secs = MSecs div 1000,
     {Secs div 1000000, Secs rem 1000000, 0}.
 
 -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",
                  [Hour, Minute, Second, Day, Month, Year]).
 
+current_time() ->
+    erlang:system_time(millisecond).
+
 mod_opt_type(access) ->
     econf:acl();
 mod_opt_type(c2s_auth_ban_lifetime) ->
-    econf:pos_int();
+    econf:timeout(second);
 mod_opt_type(c2s_max_auth_failures) ->
     econf:pos_int().
 
 mod_options(_Host) ->
     [{access, none},
-     {c2s_auth_ban_lifetime, 3600}, %% one hour
+     {c2s_auth_ban_lifetime, timer:hours(1)},
      {c2s_max_auth_failures, 20}].
index 1d926708b94b1a810e152df90133fca41bcd425c..cacab41064daadc6e50dfd99521763de0322cf34 100644 (file)
@@ -55,7 +55,7 @@
 -record(state,
        {host                :: binary(),
          send_pings          :: boolean(),
-        ping_interval       :: non_neg_integer(),
+        ping_interval       :: pos_integer(),
         ping_ack_timeout    :: undefined | non_neg_integer(),
         timeout_action      :: none | kill,
          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_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) ->
     LJID = jid:tolower(JID),
     NewTimers = case maps:find(LJID, Timers) of
@@ -242,8 +242,7 @@ add_timer(JID, Interval, Timers) ->
           maps:remove(LJID, Timers);
       _ -> Timers
                end,
-    TRef = erlang:start_timer(Interval * 1000, self(),
-                             {ping, JID}),
+    TRef = erlang:start_timer(Interval, self(), {ping, JID}),
     maps:put(LJID, TRef, NewTimers).
 
 -spec del_timer(jid(), timers()) -> timers().
@@ -260,7 +259,7 @@ depends(_Host, _Opts) ->
     [].
 
 mod_opt_type(ping_interval) ->
-    econf:pos_int();
+    econf:timeout(second);
 mod_opt_type(ping_ack_timeout) ->
     econf:timeout(second);
 mod_opt_type(send_pings) ->
@@ -269,7 +268,7 @@ mod_opt_type(timeout_action) ->
     econf:enum([none, kill]).
 
 mod_options(_Host) ->
-    [{ping_interval, 60},
+    [{ping_interval, timer:minutes(1)},
      {ping_ack_timeout, undefined},
      {send_pings, false},
      {timeout_action, none}].
index 9c50eb104d17ab575a42f445592701c4afb3de3a..8c9f2ae1d956672c230e716aae6f973051eb1588 100644 (file)
@@ -80,7 +80,7 @@ check_packet(Acc, _, _, _) ->
 update(Server, JID, Dir) ->
     StormCount = mod_pres_counter_opt:count(Server),
     TimeInterval = mod_pres_counter_opt:interval(Server),
-    TimeStamp = erlang:system_time(second),
+    TimeStamp = erlang:system_time(millisecond),
     case read(Dir) of
       undefined ->
          write(Dir,
@@ -125,7 +125,7 @@ write(K, V) -> put({pres_counter, K}, V).
 mod_opt_type(count) ->
     econf:pos_int();
 mod_opt_type(interval) ->
-    econf:pos_int().
+    econf:timeout(second).
 
 mod_options(_) ->
-    [{count, 5}, {interval, 60}].
+    [{count, 5}, {interval, timer:seconds(60)}].
index 9ac3f6c06fb4fed890f1a1dd7d27f599d2ccbd5c..73fd3ecf644d6ca8fb5a5e5b4ce812465deb9e8b 100644 (file)
@@ -429,7 +429,7 @@ check_timeout(undefined) -> true;
 check_timeout(Source) ->
     Timeout = ejabberd_option:registration_timeout(),
     if is_integer(Timeout) ->
-          Priority = -erlang:system_time(second),
+          Priority = -erlang:system_time(millisecond),
           CleanPriority = Priority + Timeout,
           F = fun () ->
                       Treap = case mnesia:read(mod_register_ip, treap, write)
index a939b17b44526363b6c6c9ef37af81437a797b54..e500d809e90078cd94286577ce440778e176f1ee 100644 (file)
@@ -327,9 +327,9 @@ is_my_host(LServer) ->
 mod_opt_type(always_record_route) ->
     econf:bool();
 mod_opt_type(flow_timeout_tcp) ->
-    econf:pos_int();
+    econf:timeout(second);
 mod_opt_type(flow_timeout_udp) ->
-    econf:pos_int();
+    econf:timeout(second);
 mod_opt_type(record_route) ->
     econf:sip_uri();
 mod_opt_type(routes) ->
@@ -356,8 +356,8 @@ mod_options(Host) ->
                 host = Host,
                 params = [{<<"lr">>, <<>>}]},
     [{always_record_route, true},
-     {flow_timeout_tcp, 120},
-     {flow_timeout_udp, 29},
+     {flow_timeout_tcp, timer:seconds(120)},
+     {flow_timeout_udp, timer:seconds(29)},
      {record_route, Route},
      {routes, [Route]},
      {via, []}].
index 0ff2623f08cdbc90a429aa16e5c87bf9dc43dd44..6b682e030b2bc504b7659a9482a315896b630eb3 100644 (file)
@@ -494,9 +494,9 @@ need_ob_hdrs(Contacts, _IsOutboundSupported = true) ->
 get_flow_timeout(LServer, #sip_socket{type = Type}) ->
     case Type of
        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.
 
 update_table() ->