summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Vatamaniuc <vatamane@apache.org>2020-01-29 17:25:35 -0500
committerJoan Touzet <wohali@users.noreply.github.com>2020-02-01 04:21:34 +0000
commit8f2fbec14e8b18eadd42e873e6d73712e12af1aa (patch)
tree51ae883a1e41cb74ac27a5bd7d4b99fc5eaf032b
parent3bbd08385d240de383a61dc7dd81621896def465 (diff)
downloadcouchdb-8f2fbec14e8b18eadd42e873e6d73712e12af1aa.tar.gz
Fix attachment reading from _node/_local shards
It just needed a few clauses in send and recv_loop it turns out.
-rw-r--r--src/chttpd/src/chttpd_node.erl5
-rw-r--r--src/couch/src/couch_httpd.erl3
2 files changed, 8 insertions, 0 deletions
diff --git a/src/chttpd/src/chttpd_node.erl b/src/chttpd/src/chttpd_node.erl
index 499eb16ff..033abd68d 100644
--- a/src/chttpd/src/chttpd_node.erl
+++ b/src/chttpd/src/chttpd_node.erl
@@ -154,12 +154,17 @@ recv_loop(Ref, ReqResp) ->
receive
{Ref, Code, Headers, _Args, start_response} ->
recv_loop(Ref, ReqResp:start({Code, Headers}));
+ {Ref, Code, Headers, Len, start_response_length} ->
+ recv_loop(Ref, ReqResp:start_response_length({Code, Headers, Len}));
{Ref, Code, Headers, chunked, respond} ->
Resp = ReqResp:respond({Code, Headers, chunked}),
recv_loop(Ref, Resp);
{Ref, Code, Headers, Args, respond} ->
Resp = ReqResp:respond({Code, Headers, Args}),
{ok, Resp};
+ {Ref, send, Data} ->
+ ReqResp:send(Data),
+ {ok, ReqResp};
{Ref, chunk, <<>>} ->
ReqResp:write_chunk(<<>>),
{ok, ReqResp};
diff --git a/src/couch/src/couch_httpd.erl b/src/couch/src/couch_httpd.erl
index 872b556cf..ef90d6b2a 100644
--- a/src/couch/src/couch_httpd.erl
+++ b/src/couch/src/couch_httpd.erl
@@ -720,6 +720,9 @@ start_response(#httpd{mochi_req=MochiReq}=Req, Code, Headers0) ->
end,
{ok, Resp}.
+send({remote, Pid, Ref} = Resp, Data) ->
+ Pid ! {Ref, send, Data},
+ {ok, Resp};
send(Resp, Data) ->
Resp:send(Data),
{ok, Resp}.