diff options
author | Loïc Hoguin <[email protected]> | 2012-09-15 22:24:59 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2012-09-15 22:24:59 +0200 |
commit | f65f7d19a843fdc805ede8d2d3d5f28c449dbceb (patch) | |
tree | 6828c9836aa8eb78595f0861da09881dcb4d6e2a /src | |
parent | 0aaa717575dd4a9287a473381d90b7cef15cda95 (diff) | |
download | cowboy-f65f7d19a843fdc805ede8d2d3d5f28c449dbceb.tar.gz cowboy-f65f7d19a843fdc805ede8d2d3d5f28c449dbceb.tar.bz2 cowboy-f65f7d19a843fdc805ede8d2d3d5f28c449dbceb.zip |
Use skip_body directly between requests
There's no need for more complex logic now that we have
the API for it.
Diffstat (limited to 'src')
-rw-r--r-- | src/cowboy_protocol.erl | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/src/cowboy_protocol.erl b/src/cowboy_protocol.erl index bb94a40..a1dbb07 100644 --- a/src/cowboy_protocol.erl +++ b/src/cowboy_protocol.erl @@ -404,7 +404,10 @@ terminate_request(HandlerState, Req, State) -> next_request(Req=#http_req{connection=Conn}, State=#state{ req_keepalive=Keepalive}, HandlerRes) -> cowboy_req:ensure_response(Req, 204), - {BodyRes, Buffer} = ensure_body_processed(Req), + {BodyRes, Buffer} = case cowboy_req:skip_body(Req) of + {ok, Req2} -> {ok, Req2#http_req.buffer}; + {error, _} -> {close, <<>>} + end, %% Flush the resp_sent message before moving on. receive {cowboy_req, resp_sent} -> ok after 0 -> ok end, case {HandlerRes, BodyRes, Conn} of @@ -416,18 +419,6 @@ next_request(Req=#http_req{connection=Conn}, State=#state{ terminate(State) end. --spec ensure_body_processed(cowboy_req:req()) -> {ok | close, binary()}. -ensure_body_processed(#http_req{body_state=done, buffer=Buffer}) -> - {ok, Buffer}; -ensure_body_processed(Req=#http_req{body_state=waiting}) -> - case cowboy_req:skip_body(Req) of - {ok, Req2} -> {ok, Req2#http_req.buffer}; - {error, _Reason} -> {close, <<>>} - end; -ensure_body_processed(Req=#http_req{body_state={stream, _, _, _}}) -> - {ok, Req2} = cowboy_req:multipart_skip(Req), - ensure_body_processed(Req2). - %% Only send an error reply if there is no resp_sent message. -spec error_terminate(cowboy_http:status(), #state{}) -> ok. error_terminate(Code, State=#state{socket=Socket, transport=Transport, |