diff options
Diffstat (limited to 'src/cowboy_http_protocol.erl')
-rw-r--r-- | src/cowboy_http_protocol.erl | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/cowboy_http_protocol.erl b/src/cowboy_http_protocol.erl index 6125d83..04abfbc 100644 --- a/src/cowboy_http_protocol.erl +++ b/src/cowboy_http_protocol.erl @@ -261,12 +261,13 @@ handler_init(Req, State=#state{transport=Transport, upgrade_protocol(Req, State, Module) catch Class:Reason -> error_terminate(500, State), + PLReq = lists:zip(record_info(fields, http_req), tl(tuple_to_list(Req))), error_logger:error_msg( "** Handler ~p terminating in init/3~n" " for the reason ~p:~p~n" "** Options were ~p~n" "** Request was ~p~n** Stacktrace: ~p~n~n", - [Handler, Class, Reason, Opts, Req, erlang:get_stacktrace()]) + [Handler, Class, Reason, Opts, PLReq, erlang:get_stacktrace()]) end. -spec upgrade_protocol(#http_req{}, #state{}, atom()) -> ok. @@ -283,13 +284,14 @@ handler_handle(HandlerState, Req, State=#state{handler={Handler, Opts}}) -> {ok, Req2, HandlerState2} -> terminate_request(HandlerState2, Req2, State) catch Class:Reason -> + PLReq = lists:zip(record_info(fields, http_req), tl(tuple_to_list(Req))), error_logger:error_msg( "** Handler ~p terminating in handle/2~n" " for the reason ~p:~p~n" "** Options were ~p~n** Handler state was ~p~n" "** Request was ~p~n** Stacktrace: ~p~n~n", [Handler, Class, Reason, Opts, - HandlerState, Req, erlang:get_stacktrace()]), + HandlerState, PLReq, erlang:get_stacktrace()]), handler_terminate(HandlerState, Req, State), error_terminate(500, State) end. @@ -341,13 +343,14 @@ handler_call(HandlerState, Req, State=#state{handler={Handler, Opts}}, handler_before_loop(HandlerState2, Req2, State#state{hibernate=true}) catch Class:Reason -> + PLReq = lists:zip(record_info(fields, http_req), tl(tuple_to_list(Req))), error_logger:error_msg( "** Handler ~p terminating in info/3~n" " for the reason ~p:~p~n" "** Options were ~p~n** Handler state was ~p~n" "** Request was ~p~n** Stacktrace: ~p~n~n", [Handler, Class, Reason, Opts, - HandlerState, Req, erlang:get_stacktrace()]), + HandlerState, PLReq, erlang:get_stacktrace()]), handler_terminate(HandlerState, Req, State), error_terminate(500, State) end. @@ -357,13 +360,14 @@ handler_terminate(HandlerState, Req, #state{handler={Handler, Opts}}) -> try Handler:terminate(Req#http_req{resp_state=locked}, HandlerState) catch Class:Reason -> + PLReq = lists:zip(record_info(fields, http_req), tl(tuple_to_list(Req))), error_logger:error_msg( "** Handler ~p terminating in terminate/2~n" " for the reason ~p:~p~n" "** Options were ~p~n** Handler state was ~p~n" "** Request was ~p~n** Stacktrace: ~p~n~n", [Handler, Class, Reason, Opts, - HandlerState, Req, erlang:get_stacktrace()]) + HandlerState, PLReq, erlang:get_stacktrace()]) end. -spec terminate_request(any(), #http_req{}, #state{}) -> ok. @@ -392,10 +396,9 @@ next_request(Req=#http_req{connection=Conn}, ensure_body_processed(#http_req{body_state=done, buffer=Buffer}) -> {ok, Buffer}; ensure_body_processed(Req=#http_req{body_state=waiting}) -> - case cowboy_http_req:body(Req) of - {error, badarg} -> {ok, Req#http_req.buffer}; %% No body. - {error, _Reason} -> {close, <<>>}; - {ok, _, Req2} -> {ok, Req2#http_req.buffer} + case cowboy_http_req:skip_body(Req) of + {ok, Req2} -> {ok, Req2#http_req.buffer}; + {error, _Reason} -> {close, <<>>} end; ensure_body_processed(Req=#http_req{body_state={multipart, _, _}}) -> {ok, Req2} = cowboy_http_req:multipart_skip(Req), |