From 87366e36adc74caffbb3680fe1cfd07fc5b2cfef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Thu, 7 Jul 2011 17:50:46 +0200 Subject: Call websocket_close/4 *after* throwing the error This ensures that an error thrown in handler_terminate/4 will be shown after the error from handler_call/6, in the expected order. As we already call WebSocketHandler:terminate/3, this should fix issue #23. --- src/cowboy_http_websocket.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cowboy_http_websocket.erl b/src/cowboy_http_websocket.erl index da1622c..fa3e50f 100644 --- a/src/cowboy_http_websocket.erl +++ b/src/cowboy_http_websocket.erl @@ -205,14 +205,14 @@ handler_call(State=#state{handler=Handler, opts=Opts}, Req, HandlerState, {shutdown, Req2, HandlerState2} -> websocket_close(State, Req2, HandlerState2, {normal, shutdown}) catch Class:Reason -> - websocket_close(State, Req, HandlerState, {error, handler}), error_logger:error_msg( "** Handler ~p terminating in websocket_handle/3~n" " for the reason ~p:~p~n** Message was ~p~n" "** Options were ~p~n** Handler state was ~p~n" "** Request was ~p~n** Stacktrace: ~p~n~n", [Handler, Class, Reason, Message, Opts, - HandlerState, Req, erlang:get_stacktrace()]) + HandlerState, Req, erlang:get_stacktrace()]), + websocket_close(State, Req, HandlerState, {error, handler}) end. -spec websocket_send(binary(), #http_req{}) -> ok. -- cgit v1.2.3