summaryrefslogtreecommitdiff
path: root/src/ejabberd_s2s.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/ejabberd_s2s.erl')
-rw-r--r--src/ejabberd_s2s.erl9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/ejabberd_s2s.erl b/src/ejabberd_s2s.erl
index a52b4a9a..0e51ec04 100644
--- a/src/ejabberd_s2s.erl
+++ b/src/ejabberd_s2s.erl
@@ -81,7 +81,7 @@
-record(state, {}).
-record(temporarily_blocked, {host = <<"">> :: binary(),
- timestamp = now() :: erlang:timestamp()}).
+ timestamp :: integer()}).
-type temporarily_blocked() :: #temporarily_blocked{}.
@@ -114,9 +114,9 @@ external_host_overloaded(Host) ->
"seconds",
[Host, ?S2S_OVERLOAD_BLOCK_PERIOD]),
mnesia:transaction(fun () ->
+ Time = p1_time_compat:monotonic_time(),
mnesia:write(#temporarily_blocked{host = Host,
- timestamp =
- now()})
+ timestamp = Time})
end).
-spec is_temporarly_blocked(binary()) -> boolean().
@@ -125,7 +125,8 @@ is_temporarly_blocked(Host) ->
case mnesia:dirty_read(temporarily_blocked, Host) of
[] -> false;
[#temporarily_blocked{timestamp = T} = Entry] ->
- case timer:now_diff(now(), T) of
+ Diff = p1_time_compat:monotonic_time() - T,
+ case p1_time_compat:convert_time_unit(Diff, native, micro_seconds) of
N when N > (?S2S_OVERLOAD_BLOCK_PERIOD) * 1000 * 1000 ->
mnesia:dirty_delete_object(Entry), false;
_ -> true