diff options
author | Loïc Hoguin <[email protected]> | 2014-05-01 16:49:19 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2014-05-01 16:49:19 +0200 |
commit | df0b088ef7ccbe2d47353a56bcd67e4cf815c6a8 (patch) | |
tree | 511bcaed355fbc5b3adc50e24619166fdbc92275 | |
parent | 4ec78b0b4d6ee82854de3cfdfe5ec1a928823659 (diff) | |
download | gun-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.
-rw-r--r-- | src/gun_http.erl | 16 |
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}; |