From b1cdccf153e280ee9731feb8a74bcd9507905982 Mon Sep 17 00:00:00 2001 From: Magnus Ahltorp Date: Mon, 6 Mar 2017 01:38:33 +0100 Subject: Limit HTTP chunk size --- src/plop_httputil.erl | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src') 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), -- cgit v1.1