mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 12:20:24 +00:00
Merge branch 'cancel-timer' of https://github.com/etrepum/cowboy
This commit is contained in:
commit
1524ba4f39
2 changed files with 6 additions and 8 deletions
|
@ -324,16 +324,15 @@ handler_loop_timeout(State=#state{loop_timeout=Timeout,
|
|||
loop_timeout_ref=PrevRef}) ->
|
||||
_ = case PrevRef of undefined -> ignore; PrevRef ->
|
||||
erlang:cancel_timer(PrevRef) end,
|
||||
TRef = make_ref(),
|
||||
erlang:send_after(Timeout, self(), {?MODULE, timeout, TRef}),
|
||||
TRef = erlang:start_timer(Timeout, self(), ?MODULE),
|
||||
State#state{loop_timeout_ref=TRef}.
|
||||
|
||||
-spec handler_loop(any(), #http_req{}, #state{}) -> ok.
|
||||
handler_loop(HandlerState, Req, State=#state{loop_timeout_ref=TRef}) ->
|
||||
receive
|
||||
{?MODULE, timeout, TRef} ->
|
||||
{timeout, TRef, ?MODULE} ->
|
||||
terminate_request(HandlerState, Req, State);
|
||||
{?MODULE, timeout, OlderTRef} when is_reference(OlderTRef) ->
|
||||
{timeout, OlderTRef, ?MODULE} when is_reference(OlderTRef) ->
|
||||
handler_loop(HandlerState, Req, State);
|
||||
Message ->
|
||||
handler_call(HandlerState, Req, State, Message)
|
||||
|
|
|
@ -232,8 +232,7 @@ handler_loop_timeout(State=#state{timeout=infinity}) ->
|
|||
handler_loop_timeout(State=#state{timeout=Timeout, timeout_ref=PrevRef}) ->
|
||||
_ = case PrevRef of undefined -> ignore; PrevRef ->
|
||||
erlang:cancel_timer(PrevRef) end,
|
||||
TRef = make_ref(),
|
||||
erlang:send_after(Timeout, self(), {?MODULE, timeout, TRef}),
|
||||
TRef = erlang:start_timer(Timeout, self(), ?MODULE),
|
||||
State#state{timeout_ref=TRef}.
|
||||
|
||||
%% @private
|
||||
|
@ -248,9 +247,9 @@ handler_loop(State=#state{messages={OK, Closed, Error}, timeout_ref=TRef},
|
|||
handler_terminate(State, Req, HandlerState, {error, closed});
|
||||
{Error, Socket, Reason} ->
|
||||
handler_terminate(State, Req, HandlerState, {error, Reason});
|
||||
{?MODULE, timeout, TRef} ->
|
||||
{timeout, TRef, ?MODULE} ->
|
||||
websocket_close(State, Req, HandlerState, {normal, timeout});
|
||||
{?MODULE, timeout, OlderTRef} when is_reference(OlderTRef) ->
|
||||
{timeout, OlderTRef, ?MODULE} when is_reference(OlderTRef) ->
|
||||
handler_loop(State, Req, HandlerState, SoFar);
|
||||
Message ->
|
||||
handler_call(State, Req, HandlerState,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue