mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-15 04:30:25 +00:00
Fix a bug preventing 'onresponse' from being called on errors
This commit is contained in:
parent
ca9278bc27
commit
cc6c4e39de
2 changed files with 12 additions and 2 deletions
|
@ -438,12 +438,13 @@ ensure_response(#http_req{socket=Socket, transport=Transport,
|
||||||
|
|
||||||
%% Only send an error reply if there is no resp_sent message.
|
%% Only send an error reply if there is no resp_sent message.
|
||||||
-spec error_terminate(cowboy_http:status(), #state{}) -> ok.
|
-spec error_terminate(cowboy_http:status(), #state{}) -> ok.
|
||||||
error_terminate(Code, State=#state{socket=Socket, transport=Transport}) ->
|
error_terminate(Code, State=#state{socket=Socket, transport=Transport,
|
||||||
|
onresponse=OnResponse}) ->
|
||||||
receive
|
receive
|
||||||
{cowboy_http_req, resp_sent} -> ok
|
{cowboy_http_req, resp_sent} -> ok
|
||||||
after 0 ->
|
after 0 ->
|
||||||
_ = cowboy_http_req:reply(Code, #http_req{
|
_ = cowboy_http_req:reply(Code, #http_req{
|
||||||
socket=Socket, transport=Transport,
|
socket=Socket, transport=Transport, onresponse=OnResponse,
|
||||||
connection=close, pid=self(), resp_state=waiting}),
|
connection=close, pid=self(), resp_state=waiting}),
|
||||||
ok
|
ok
|
||||||
end,
|
end,
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
-export([nc_zero/1]).
|
-export([nc_zero/1]).
|
||||||
-export([onrequest/1]).
|
-export([onrequest/1]).
|
||||||
-export([onrequest_reply/1]).
|
-export([onrequest_reply/1]).
|
||||||
|
-export([onresponse_crash/1]).
|
||||||
-export([onresponse_reply/1]).
|
-export([onresponse_reply/1]).
|
||||||
-export([pipeline/1]).
|
-export([pipeline/1]).
|
||||||
-export([rest_keepalive/1]).
|
-export([rest_keepalive/1]).
|
||||||
|
@ -116,6 +117,7 @@ groups() ->
|
||||||
onrequest_reply
|
onrequest_reply
|
||||||
]},
|
]},
|
||||||
{onresponse, [], [
|
{onresponse, [], [
|
||||||
|
onresponse_crash,
|
||||||
onresponse_reply
|
onresponse_reply
|
||||||
]}
|
]}
|
||||||
].
|
].
|
||||||
|
@ -604,6 +606,13 @@ onrequest_hook(Req) ->
|
||||||
Req3
|
Req3
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
onresponse_crash(Config) ->
|
||||||
|
Client = ?config(client, Config),
|
||||||
|
{ok, Client2} = cowboy_client:request(<<"GET">>,
|
||||||
|
build_url("/handler_errors?case=init_before_reply", Config), Client),
|
||||||
|
{ok, 777, Headers, Client3} = cowboy_client:response(Client2),
|
||||||
|
{<<"x-hook">>, <<"onresponse">>} = lists:keyfind(<<"x-hook">>, 1, Headers).
|
||||||
|
|
||||||
onresponse_reply(Config) ->
|
onresponse_reply(Config) ->
|
||||||
Client = ?config(client, Config),
|
Client = ?config(client, Config),
|
||||||
{ok, Client2} = cowboy_client:request(<<"GET">>,
|
{ok, Client2} = cowboy_client:request(<<"GET">>,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue