From: Christophe Romain Date: Fri, 29 Apr 2016 08:57:34 +0000 (+0200) Subject: Let shaper cope with low resolution system clock X-Git-Tag: 16.06~122 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6a10916ddab5b289bc1f83b835818bb907bcda3c;p=ejabberd Let shaper cope with low resolution system clock We no longer rely on getting unique values from clock source, so we need to handle cope with systems which does not have a microsecond resolution on system clock (such as MS Windows) --- diff --git a/src/shaper.erl b/src/shaper.erl index a136c2130..eb82b8faa 100644 --- a/src/shaper.erl +++ b/src/shaper.erl @@ -124,9 +124,13 @@ update(#maxrate{} = State, Size) -> true -> 0 end, NextNow = p1_time_compat:system_time(micro_seconds) + Pause * 1000, + Div = case NextNow - State#maxrate.lasttime of + 0 -> 1; + V -> V + end, {State#maxrate{lastrate = (State#maxrate.lastrate + - 1000000 * Size / (NextNow - State#maxrate.lasttime)) + 1000000 * Size / Div) / 2, lasttime = NextNow}, Pause}.