From 4fd6e2f7cdca1c1adf1ba0bd76a0702328c380f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Mon, 4 Sep 2017 20:48:07 +0200 Subject: Accept sendfile tuple with 0 length in cowboy_req This will result in no data being sent. It's simply easier to do this than to have to handle 0 size cases in user code. --- src/cowboy_req.erl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/cowboy_req.erl') diff --git a/src/cowboy_req.erl b/src/cowboy_req.erl index 09e1ee5..936f6bb 100644 --- a/src/cowboy_req.erl +++ b/src/cowboy_req.erl @@ -98,7 +98,7 @@ %% Cowboy expects the real length as it is used as metadata. %% @todo We should probably explicitly reject it. -type resp_body() :: iodata() - | {sendfile, non_neg_integer(), pos_integer(), file:name_all()}. + | {sendfile, non_neg_integer(), non_neg_integer(), file:name_all()}. -export_type([resp_body/0]). -type push_opts() :: #{ @@ -635,6 +635,11 @@ reply(Status, Headers, Req) -> -> Req when Req::req(). reply(_, _, _, #{has_sent_resp := _}) -> error(function_clause); +reply(Status, Headers, Sendfile = {sendfile, _, 0, _}, Req) + when is_integer(Status); is_binary(Status) -> + do_reply(Status, Headers#{ + <<"content-length">> => <<"0">> + }, <<>>, Req); reply(Status, Headers, SendFile = {sendfile, _, Len, _}, Req) when is_integer(Status); is_binary(Status) -> do_reply(Status, Headers#{ -- cgit v1.2.3