You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by rn...@apache.org on 2020/09/10 19:06:53 UTC

[couchdb] branch fix-buffer-response-true created (now 5965b1a)

This is an automated email from the ASF dual-hosted git repository.

rnewson pushed a change to branch fix-buffer-response-true
in repository https://gitbox.apache.org/repos/asf/couchdb.git.


      at 5965b1a  Fix buffer_response=true

This branch includes the following new commits:

     new 5965b1a  Fix buffer_response=true

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[couchdb] 01/01: Fix buffer_response=true

Posted by rn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rnewson pushed a commit to branch fix-buffer-response-true
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit 5965b1a865321895758f88daef10f1d4bba98be1
Author: Robert Newson <rn...@apache.org>
AuthorDate: Thu Sep 10 20:06:15 2020 +0100

    Fix buffer_response=true
    
    We need to call StartFun as it might add headers, etc.
---
 src/chttpd/src/chttpd.erl | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/chttpd/src/chttpd.erl b/src/chttpd/src/chttpd.erl
index fb7d61a..216b0a9 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}}) ->