diff options
author | Sergey Sinkovskiy <[email protected]> | 2014-04-30 09:57:51 +0300 |
---|---|---|
committer | Kirilll Zaborsky <[email protected]> | 2014-04-30 14:28:43 +0400 |
commit | cf3c624dc66a42d9d7bec904d8be3b8c4cce38ae (patch) | |
tree | 43abfd2c3df19ddcd2870e9a51aac37bdad90d1e /lib/inets/src/http_client/httpc_handler.erl | |
parent | 8acc644e162bad52f7ab81c76c0cad15628e4f3d (diff) | |
download | otp-cf3c624dc66a42d9d7bec904d8be3b8c4cce38ae.tar.gz otp-cf3c624dc66a42d9d7bec904d8be3b8c4cce38ae.tar.bz2 otp-cf3c624dc66a42d9d7bec904d8be3b8c4cce38ae.zip |
inets: Fix streaming with single chunk body
Receiving HTTP response with chunked transfer encoding in a single
TCP message should produce stream messages for response body when
streaming mode is used for httpc.
Diffstat (limited to 'lib/inets/src/http_client/httpc_handler.erl')
-rw-r--r-- | lib/inets/src/http_client/httpc_handler.erl | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/inets/src/http_client/httpc_handler.erl b/lib/inets/src/http_client/httpc_handler.erl index 80c8b2439e..32d20b62d1 100644 --- a/lib/inets/src/http_client/httpc_handler.erl +++ b/lib/inets/src/http_client/httpc_handler.erl @@ -1116,8 +1116,16 @@ handle_http_body(Body, #state{headers = Headers, {new_body, NewBody}]), NewHeaders = http_chunk:handle_headers(Headers, ChunkedHeaders), - handle_response(State#state{headers = NewHeaders, - body = NewBody}) + case Body of + <<>> -> + handle_response(State#state{headers = NewHeaders, + body = NewBody}); + _ -> + {NewBody2, NewRequest} = + stream(NewBody, Request, Code), + handle_response(State#state{headers = NewHeaders, + body = NewBody2}) + end end; Encoding when is_list(Encoding) -> ?hcrt("handle_http_body - encoding", [{encoding, Encoding}]), |