From 55e98f4f61b8a7da470bed5e1473c1a186cf8c1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Tue, 5 Mar 2013 14:08:44 +0100 Subject: Handle identity transfer-encoding when determining body length --- src/cowboy_req.erl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/cowboy_req.erl b/src/cowboy_req.erl index 79aa44d..c800595 100644 --- a/src/cowboy_req.erl +++ b/src/cowboy_req.erl @@ -579,12 +579,12 @@ has_body(Req) -> %% and the body hasn't been read at the time of the call. -spec body_length(Req) -> {undefined | non_neg_integer(), Req} when Req::req(). body_length(Req) -> - case lists:keymember(<<"transfer-encoding">>, 1, Req#http_req.headers) of - true -> - {undefined, Req}; - false -> - {ok, Length, Req2} = parse_header(<<"content-length">>, Req, 0), - {Length, Req2} + case parse_header(<<"transfer-encoding">>, Req) of + {ok, [<<"identity">>], Req2} -> + {ok, Length, Req3} = parse_header(<<"content-length">>, Req2, 0), + {Length, Req3}; + {ok, _, Req2} -> + {undefined, Req2} end. %% @doc Initialize body streaming and set custom decoding functions. -- cgit v1.2.3