From d2205d9ea6aa71ff256c48667755676d0e6c2377 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Mon, 16 Feb 2015 19:49:01 +0100 Subject: Do not send empty chunks User code may sometimes send an empty value which gets understood by the client as being the end of the stream while this was not intended. Ignoring empty values allow making sure the stream isn't ended by mistake. --- src/cowboy_req.erl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/cowboy_req.erl b/src/cowboy_req.erl index 5e23a7b..feac388 100644 --- a/src/cowboy_req.erl +++ b/src/cowboy_req.erl @@ -823,8 +823,11 @@ chunk(Data, #http_req{socket=Socket, transport=Transport, ok = Transport:send(Socket, Data); chunk(Data, #http_req{socket=Socket, transport=Transport, resp_state=chunks}) -> - ok = Transport:send(Socket, [integer_to_list(iolist_size(Data), 16), - <<"\r\n">>, Data, <<"\r\n">>]). + case iolist_size(Data) of + 0 -> ok; + Size -> Transport:send(Socket, [integer_to_list(Size, 16), + <<"\r\n">>, Data, <<"\r\n">>]) + end. %% If ever made public, need to send nothing if HEAD. -spec last_chunk(Req) -> Req when Req::req(). -- cgit v1.2.3