From 8f8f63b1cef76a28b2bf7558f4dbb7feda6e9168 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Mon, 2 Jan 2017 16:19:44 +0100 Subject: Fix sending of body as iodata() with HTTP --- src/gun_http.erl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gun_http.erl b/src/gun_http.erl index 46ff00a..65135f9 100644 --- a/src/gun_http.erl +++ b/src/gun_http.erl @@ -257,6 +257,7 @@ data(State=#http_state{socket=Socket, transport=Transport, version=Version, out=Out, streams=Streams}, StreamRef, IsFin, Data) -> case lists:last(Streams) of {StreamRef, _, true} -> + DataLength = iolist_size(Data), case Out of body_chunked when Version =:= 'HTTP/1.1', IsFin =:= fin -> case Data of @@ -272,9 +273,9 @@ data(State=#http_state{socket=Socket, transport=Transport, version=Version, body_chunked when Version =:= 'HTTP/1.1' -> Transport:send(Socket, cow_http_te:chunk(Data)), State; - {body, Length} when byte_size(Data) =< Length -> + {body, Length} when DataLength =< Length -> Transport:send(Socket, Data), - Length2 = Length - byte_size(Data), + Length2 = Length - DataLength, if Length2 =:= 0, IsFin =:= fin -> State#http_state{out=head}; -- cgit v1.2.3