Просмотр исходного кода

Merge branch 'cancel-timer' of https://github.com/etrepum/cowboy

Loïc Hoguin 13 лет назад
Родитель
Сommit
1524ba4f39
2 измененных файлов с 6 добавлено и 8 удалено
  1. 3 4
      src/cowboy_http_protocol.erl
  2. 3 4
      src/cowboy_http_websocket.erl

+ 3 - 4
src/cowboy_http_protocol.erl

@@ -324,16 +324,15 @@ handler_loop_timeout(State=#state{loop_timeout=Timeout,
 		loop_timeout_ref=PrevRef}) ->
 		loop_timeout_ref=PrevRef}) ->
 	_ = case PrevRef of undefined -> ignore; PrevRef ->
 	_ = case PrevRef of undefined -> ignore; PrevRef ->
 		erlang:cancel_timer(PrevRef) end,
 		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}.
 	State#state{loop_timeout_ref=TRef}.
 
 
 -spec handler_loop(any(), #http_req{}, #state{}) -> ok.
 -spec handler_loop(any(), #http_req{}, #state{}) -> ok.
 handler_loop(HandlerState, Req, State=#state{loop_timeout_ref=TRef}) ->
 handler_loop(HandlerState, Req, State=#state{loop_timeout_ref=TRef}) ->
 	receive
 	receive
-		{?MODULE, timeout, TRef} ->
+		{timeout, TRef, ?MODULE} ->
 			terminate_request(HandlerState, Req, State);
 			terminate_request(HandlerState, Req, State);
-		{?MODULE, timeout, OlderTRef} when is_reference(OlderTRef) ->
+		{timeout, OlderTRef, ?MODULE} when is_reference(OlderTRef) ->
 			handler_loop(HandlerState, Req, State);
 			handler_loop(HandlerState, Req, State);
 		Message ->
 		Message ->
 			handler_call(HandlerState, Req, State, Message)
 			handler_call(HandlerState, Req, State, Message)

+ 3 - 4
src/cowboy_http_websocket.erl

@@ -232,8 +232,7 @@ handler_loop_timeout(State=#state{timeout=infinity}) ->
 handler_loop_timeout(State=#state{timeout=Timeout, timeout_ref=PrevRef}) ->
 handler_loop_timeout(State=#state{timeout=Timeout, timeout_ref=PrevRef}) ->
 	_ = case PrevRef of undefined -> ignore; PrevRef ->
 	_ = case PrevRef of undefined -> ignore; PrevRef ->
 		erlang:cancel_timer(PrevRef) end,
 		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}.
 	State#state{timeout_ref=TRef}.
 
 
 %% @private
 %% @private
@@ -248,9 +247,9 @@ handler_loop(State=#state{messages={OK, Closed, Error}, timeout_ref=TRef},
 			handler_terminate(State, Req, HandlerState, {error, closed});
 			handler_terminate(State, Req, HandlerState, {error, closed});
 		{Error, Socket, Reason} ->
 		{Error, Socket, Reason} ->
 			handler_terminate(State, Req, HandlerState, {error, Reason});
 			handler_terminate(State, Req, HandlerState, {error, Reason});
-		{?MODULE, timeout, TRef} ->
+		{timeout, TRef, ?MODULE} ->
 			websocket_close(State, Req, HandlerState, {normal, timeout});
 			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);
 			handler_loop(State, Req, HandlerState, SoFar);
 		Message ->
 		Message ->
 			handler_call(State, Req, HandlerState,
 			handler_call(State, Req, HandlerState,