aboutsummaryrefslogtreecommitdiffstats
path: root/src/gun_http.erl
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2014-05-01 16:49:19 +0200
committerLoïc Hoguin <[email protected]>2014-05-01 16:49:19 +0200
commitdf0b088ef7ccbe2d47353a56bcd67e4cf815c6a8 (patch)
tree511bcaed355fbc5b3adc50e24619166fdbc92275 /src/gun_http.erl
parent4ec78b0b4d6ee82854de3cfdfe5ec1a928823659 (diff)
downloadgun-df0b088ef7ccbe2d47353a56bcd67e4cf815c6a8.tar.gz
gun-df0b088ef7ccbe2d47353a56bcd67e4cf815c6a8.tar.bz2
gun-df0b088ef7ccbe2d47353a56bcd67e4cf815c6a8.zip
Use cow_http_te for creating chunks
This way the issue fixed by the previous commit won't happen again.
Diffstat (limited to 'src/gun_http.erl')
-rw-r--r--src/gun_http.erl16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/gun_http.erl b/src/gun_http.erl
index e743434..46f5a53 100644
--- a/src/gun_http.erl
+++ b/src/gun_http.erl
@@ -222,28 +222,24 @@ data(State=#http_state{socket=Socket, transport=Transport, version=Version,
out=Out, streams=Streams}, StreamRef, IsFin, Data) ->
case lists:last(Streams) of
{StreamRef, true} ->
- DataSize = byte_size(Data),
case Out of
body_chunked when Version =:= 'HTTP/1.1', IsFin =:= fin ->
case Data of
<<>> ->
- Transport:send(Socket, <<"0\r\n\r\n">>);
+ Transport:send(Socket, cow_http_te:last_chunk());
_ ->
Transport:send(Socket, [
- integer_to_list(DataSize, 16), <<"\r\n">>,
- Data, <<"\r\n0\r\n\r\n">>
+ cow_http_te:chunk(Data),
+ cow_http_te:last_chunk()
])
end,
State#http_state{out=head};
body_chunked when Version =:= 'HTTP/1.1' ->
- Transport:send(Socket, [
- integer_to_list(DataSize), <<"\r\n">>,
- Data, <<"\r\n">>
- ]),
+ Transport:send(Socket, cow_http_te:chunk(Data)),
State;
- {body, Length} when DataSize =< Length ->
+ {body, Length} when byte_size(Data) =< Length ->
Transport:send(Socket, Data),
- Length2 = Length - DataSize,
+ Length2 = Length - byte_size(Data),
if
Length2 =:= 0, IsFin =:= fin ->
State#http_state{out=head};