diff options
-rw-r--r-- | share/www/script/couch.js | 2 | ||||
-rw-r--r-- | share/www/script/test/copy_doc.js | 5 | ||||
-rw-r--r-- | src/couchdb/couch_httpd_db.erl | 24 |
3 files changed, 11 insertions, 20 deletions
diff --git a/share/www/script/couch.js b/share/www/script/couch.js index 633abe96..913f58fb 100644 --- a/share/www/script/couch.js +++ b/share/www/script/couch.js @@ -121,7 +121,7 @@ function CouchDB(name, httpHeaders) { CouchDB.maybeThrowError(this.last_req); var results = JSON.parse(this.last_req.responseText); for (var i = 0; i < docs.length; i++) { - if(results[i] && results[i].rev && results[i].ok) { + if(results[i] && results[i].rev) { docs[i]._rev = results[i].rev; } } diff --git a/share/www/script/test/copy_doc.js b/share/www/script/test/copy_doc.js index a15e3ef8..a6de1892 100644 --- a/share/www/script/test/copy_doc.js +++ b/share/www/script/test/copy_doc.js @@ -23,7 +23,6 @@ couchTests.copy_doc = function(debug) { }); T(xhr.status == 201); - T(JSON.parse(xhr.responseText).ok); T(db.open("doc_that_was_copied").v == 1); // COPY with existing target @@ -37,10 +36,6 @@ couchTests.copy_doc = function(debug) { }); T(xhr.status == 409); // conflict - // missing Destination header - var xhr = CouchDB.request("COPY", "/test_suite_db/doc_to_be_copied2"); - T(xhr.status == 400); // bad request - var rev = db.open("doc_to_be_overwritten")._rev; var xhr = CouchDB.request("COPY", "/test_suite_db/doc_to_be_copied2", { headers: {"Destination":"doc_to_be_overwritten?rev=" + rev} diff --git a/src/couchdb/couch_httpd_db.erl b/src/couchdb/couch_httpd_db.erl index 87cf7265..93e93892 100644 --- a/src/couchdb/couch_httpd_db.erl +++ b/src/couchdb/couch_httpd_db.erl @@ -809,7 +809,7 @@ update_doc_result_to_json({{Id, Rev}, Error}) -> update_doc_result_to_json(#doc{id=DocId}, Result) -> update_doc_result_to_json(DocId, Result); update_doc_result_to_json(DocId, {ok, NewRev}) -> - {[{ok, true}, {id, DocId}, {rev, couch_doc:rev_to_str(NewRev)}]}; + {[{id, DocId}, {rev, couch_doc:rev_to_str(NewRev)}]}; update_doc_result_to_json(DocId, Error) -> {_Code, ErrorStr, Reason} = couch_httpd:error_info(Error), {[{id, DocId}, {error, ErrorStr}, {reason, Reason}]}. @@ -1216,19 +1216,15 @@ extract_header_rev(Req, ExplicitRev) -> parse_copy_destination_header(Req) -> - case couch_httpd:header_value(Req, "Destination") of - undefined -> - throw({bad_request, "Destination header is mandatory for COPY"}); - Destination -> - case re:run(Destination, "\\?", [{capture, none}]) of - nomatch -> - {list_to_binary(Destination), {0, []}}; - match -> - [DocId, RevQs] = re:split(Destination, "\\?", [{return, list}]), - [_RevQueryKey, Rev] = re:split(RevQs, "=", [{return, list}]), - {Pos, RevId} = couch_doc:parse_rev(Rev), - {list_to_binary(DocId), {Pos, [RevId]}} - end + Destination = couch_httpd:header_value(Req, "Destination"), + case re:run(Destination, "\\?", [{capture, none}]) of + nomatch -> + {list_to_binary(Destination), {0, []}}; + match -> + [DocId, RevQs] = re:split(Destination, "\\?", [{return, list}]), + [_RevQueryKey, Rev] = re:split(RevQs, "=", [{return, list}]), + {Pos, RevId} = couch_doc:parse_rev(Rev), + {list_to_binary(DocId), {Pos, [RevId]}} end. validate_attachment_names(Doc) -> |