aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/cowboy_req.erl10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/cowboy_req.erl b/src/cowboy_req.erl
index 0c4969d..8c9a618 100644
--- a/src/cowboy_req.erl
+++ b/src/cowboy_req.erl
@@ -564,8 +564,14 @@ set_meta(Name, Value, Req=#http_req{meta=Meta}) ->
%% @doc Return whether the request message has a body.
-spec has_body(cowboy_req:req()) -> boolean().
has_body(Req) ->
- lists:keymember(<<"content-length">>, 1, Req#http_req.headers) orelse
- lists:keymember(<<"transfer-encoding">>, 1, Req#http_req.headers).
+ case lists:keyfind(<<"content-length">>, 1, Req#http_req.headers) of
+ {_, <<"0">>} ->
+ false;
+ {_, _} ->
+ true;
+ _ ->
+ lists:keymember(<<"transfer-encoding">>, 1, Req#http_req.headers)
+ end.
%% @doc Return the request message body length, if known.
%%