diff options
author | Alex Kovalev <[email protected]> | 2015-03-26 11:15:05 +0300 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2015-05-06 11:27:47 +0300 |
commit | f25e452139478c0c24ac8462458a2324ba7b1763 (patch) | |
tree | 71460e29476a24adf3bfe0dc1b7fc750a575e621 | |
parent | 050621231ca29eb8004721549c34d00b79f89a68 (diff) | |
download | cowboy-f25e452139478c0c24ac8462458a2324ba7b1763.tar.gz cowboy-f25e452139478c0c24ac8462458a2324ba7b1763.tar.bz2 cowboy-f25e452139478c0c24ac8462458a2324ba7b1763.zip |
fixed cowboy_clock inbox overflow if system clock was changed
-rw-r--r-- | src/cowboy_clock.erl | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/cowboy_clock.erl b/src/cowboy_clock.erl index 37767e1..66fd5d4 100644 --- a/src/cowboy_clock.erl +++ b/src/cowboy_clock.erl @@ -65,7 +65,7 @@ init([]) -> named_table, {read_concurrency, true}]), T = erlang:universaltime(), B = update_rfc1123(<<>>, undefined, T), - {ok, TRef} = timer:send_interval(1000, update), + TRef = erlang:send_after(1000, self(), update), ets:insert(?MODULE, {rfc1123, B}), {ok, #state{universaltime=T, rfc1123=B, tref=TRef}}. @@ -83,10 +83,12 @@ handle_cast(_Msg, State) -> {noreply, State}. -spec handle_info(any(), State) -> {noreply, State} when State::#state{}. -handle_info(update, #state{universaltime=Prev, rfc1123=B1, tref=TRef}) -> +handle_info(update, #state{universaltime=Prev, rfc1123=B1, tref=TRef0}) -> + erlang:cancel_timer(TRef0), T = erlang:universaltime(), B2 = update_rfc1123(B1, Prev, T), ets:insert(?MODULE, {rfc1123, B2}), + TRef = erlang:send_after(1000, self(), update), {noreply, #state{universaltime=T, rfc1123=B2, tref=TRef}}; handle_info(_Info, State) -> {noreply, State}. |