diff options
author | Magnus Ahltorp <map@kth.se> | 2017-03-06 01:38:33 +0100 |
---|---|---|
committer | Linus Nordberg <linus@nordu.net> | 2017-03-08 11:11:48 +0100 |
commit | b1cdccf153e280ee9731feb8a74bcd9507905982 (patch) | |
tree | 766763a0b5c19a867bbf565a4462643cdcd68f07 | |
parent | 9fff23339bb1f529bc9d4e5f3310a489b69de1fb (diff) |
Limit HTTP chunk size
-rw-r--r-- | src/plop_httputil.erl | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/plop_httputil.erl b/src/plop_httputil.erl index 67e48ba..81a99b1 100644 --- a/src/plop_httputil.erl +++ b/src/plop_httputil.erl @@ -73,6 +73,16 @@ request(DebugTag, URL, Headers, <<>>) -> request(DebugTag, URL, Headers, RequestBody) -> request(DebugTag, URL, Headers, RequestBody, post). +-define(MAX_CHUNK_SIZE, 512*1024). + +chunk_data(<<>>) -> + eof; +chunk_data(Data) when is_binary(Data) -> + ChunkSize = min(size(Data), ?MAX_CHUNK_SIZE), + lager:debug("~p data left, sending ~p bytes", [size(Data), ChunkSize]), + {Chunk, Rest} = split_binary(Data, ChunkSize), + {ok, Chunk, Rest}. + request(DebugTag, URL, Headers, RequestBody, Method) -> Starttime = os:timestamp(), ParsedURL = hackney_url:parse_url(URL), @@ -99,7 +109,7 @@ request(DebugTag, URL, Headers, RequestBody, Method) -> {Method, Path, add_auth(MethodString, Path, Headers, RequestBody), - RequestBody}), + {fun chunk_data/1, RequestBody}}), lager:debug("~s: received headers for ~p: ~p", [DebugTag, URL, RespHeaders]), {ok, Body} = hackney:body(ClientRef), |