summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Newson <rnewson@apache.org>2020-09-10 20:06:15 +0100
committerRobert Newson <rnewson@apache.org>2020-09-10 20:07:15 +0100
commit05aeb50c67ee7357788451babc92474f73d11cde (patch)
treebfd2c176d4f24854e49511923f5009fd766b44d9
parent45ddc9350e34c609a0a0b0279d0a70f8a4cbc63b (diff)
downloadcouchdb-fix-buffer-response-true.tar.gz
Fix buffer_response=truefix-buffer-response-true
We need to call StartFun as it might add headers, etc.
-rw-r--r--src/chttpd/src/chttpd.erl10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/chttpd/src/chttpd.erl b/src/chttpd/src/chttpd.erl
index fb7d61a06..216b0a93e 100644
--- a/src/chttpd/src/chttpd.erl
+++ b/src/chttpd/src/chttpd.erl
@@ -855,13 +855,19 @@ end_delayed_json_response(#delayed_resp{buffer_response=false}=DelayedResp) ->
end_delayed_json_response(#delayed_resp{buffer_response=true}=DelayedResp) ->
#delayed_resp{
+ start_fun = StartFun,
req = Req,
code = Code,
headers = Headers,
chunks = Chunks
} = DelayedResp,
- {ok, Resp} = start_response_length(Req, Code, Headers, iolist_size(Chunks)),
- send(Resp, lists:reverse(Chunks)).
+ {ok, Resp} = StartFun(Req, Code, Headers),
+ lists:foreach(
+ fun
+ ("") -> ok;
+ (Chunk) -> send_chunk(Resp, Chunk)
+ end, lists:reverse(Chunks)),
+ end_json_response(Resp).
get_delayed_req(#delayed_resp{req=#httpd{mochi_req=MochiReq}}) ->