diff options
author | Loïc Hoguin <[email protected]> | 2018-11-14 19:24:39 +0100 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2018-11-14 19:24:39 +0100 |
commit | 292039362a6125dfd0a163d5b0a49b800bf80b11 (patch) | |
tree | 31a38f67960503ece6abfa82a0d285152d8dc4ff /src/cowboy_req.erl | |
parent | 4fedb336311604253153eafe81f33a77b44a0b2f (diff) | |
download | cowboy-292039362a6125dfd0a163d5b0a49b800bf80b11.tar.gz cowboy-292039362a6125dfd0a163d5b0a49b800bf80b11.tar.bz2 cowboy-292039362a6125dfd0a163d5b0a49b800bf80b11.zip |
Don't send the content-length header in empty 304 responses
It's OK to send it when set explicitly, as it can be set
to what the representation's size would have been.
Diffstat (limited to 'src/cowboy_req.erl')
-rw-r--r-- | src/cowboy_req.erl | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/cowboy_req.erl b/src/cowboy_req.erl index 2c3de06..5633182 100644 --- a/src/cowboy_req.erl +++ b/src/cowboy_req.erl @@ -771,11 +771,15 @@ reply(Status, Headers, SendFile = {sendfile, _, Len, _}, Req) do_reply(Status, Headers#{ <<"content-length">> => integer_to_binary(Len) }, SendFile, Req); -%% 204 responses must not include content-length. (RFC7230 3.3.1, RFC7230 3.3.2) -reply(Status=204, Headers, Body, Req) -> +%% 204 responses must not include content-length. 304 responses may +%% but only when set explicitly. (RFC7230 3.3.1, RFC7230 3.3.2) +reply(Status, Headers, Body, Req) + when Status =:= 204; Status =:= 304 -> do_reply(Status, Headers, Body, Req); reply(Status= <<"204",_/bits>>, Headers, Body, Req) -> do_reply(Status, Headers, Body, Req); +reply(Status= <<"304",_/bits>>, Headers, Body, Req) -> + do_reply(Status, Headers, Body, Req); reply(Status, Headers, Body, Req) when is_integer(Status); is_binary(Status) -> do_reply(Status, Headers#{ |