diff options
author | Nick Vatamaniuc <vatamane@apache.org> | 2020-01-29 17:25:35 -0500 |
---|---|---|
committer | Joan Touzet <wohali@users.noreply.github.com> | 2020-02-01 04:21:34 +0000 |
commit | 8f2fbec14e8b18eadd42e873e6d73712e12af1aa (patch) | |
tree | 51ae883a1e41cb74ac27a5bd7d4b99fc5eaf032b | |
parent | 3bbd08385d240de383a61dc7dd81621896def465 (diff) | |
download | couchdb-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.erl | 5 | ||||
-rw-r--r-- | src/couch/src/couch_httpd.erl | 3 |
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}. |