summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Lehnardt <jan@apache.org>2021-03-14 17:56:41 +0100
committerJan Lehnardt <jan@apache.org>2021-07-12 10:39:11 +0200
commit95d49bc6846280b312944ec6c0da94cccf5e9fff (patch)
tree9810bf0c0730158f07784577c109656a167757bd
parentc05fd08308bee5c7c44a7596bb406dadb9981617 (diff)
downloadcouchdb-95d49bc6846280b312944ec6c0da94cccf5e9fff.tar.gz
fix badmatch when fetching latest rev
Closes #3362
-rw-r--r--src/chttpd/src/chttpd_db.erl8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/chttpd/src/chttpd_db.erl b/src/chttpd/src/chttpd_db.erl
index 8e528b5f2..312adaed4 100644
--- a/src/chttpd/src/chttpd_db.erl
+++ b/src/chttpd/src/chttpd_db.erl
@@ -919,7 +919,7 @@ db_doc_req(#httpd{method='DELETE'}=Req, Db, DocId) ->
db_doc_req(#httpd{method='GET', mochi_req=MochiReq}=Req, Db, DocId) ->
#doc_query_args{
- rev = Rev,
+ rev = Rev0,
open_revs = Revs,
options = Options0,
atts_since = AttsSince
@@ -932,6 +932,12 @@ db_doc_req(#httpd{method='GET', mochi_req=MochiReq}=Req, Db, DocId) ->
[{atts_since, AttsSince}, attachments | Options];
true -> Options
end,
+ Rev = case lists:member(latest, Options) of
+ % couch_doc_open will open the winning rev despite of a rev passed
+ % https://docs.couchdb.org/en/stable/api/document/common.html?highlight=latest#get--db-docid
+ true -> nil;
+ false -> Rev0
+ end,
Doc = couch_doc_open(Db, DocId, Rev, Options2),
send_doc(Req, Doc, Options2);
_ ->