Repository: couchdb-couch-replicator
Updated Branches:
  refs/heads/2707-merge-couch_replicator-fixes-from-cloudant-fork 7e72e97c4 -> 
80708a99e (forced update)


Verify that url really points to a database

This is a cherry-pick of:

https://github.com/cloudant/couch_replicator/commit/e73714196936c345d54158e674ab36cab20beeec


Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/commit/362b3fd4
Tree: 
http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/tree/362b3fd4
Diff: 
http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/diff/362b3fd4

Branch: refs/heads/2707-merge-couch_replicator-fixes-from-cloudant-fork
Commit: 362b3fd490d00015ea13fe24b62b925c1acb6ea5
Parents: 2e6d5c1
Author: Robert Newson <rnew...@apache.org>
Authored: Wed Dec 3 11:41:48 2014 +0000
Committer: Mike Wallace <mikewall...@apache.org>
Committed: Fri Jun 5 17:20:07 2015 +0100

----------------------------------------------------------------------
 src/couch_replicator_api_wrap.erl | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/blob/362b3fd4/src/couch_replicator_api_wrap.erl
----------------------------------------------------------------------
diff --git a/src/couch_replicator_api_wrap.erl 
b/src/couch_replicator_api_wrap.erl
index 504a3d1..96947de 100644
--- a/src/couch_replicator_api_wrap.erl
+++ b/src/couch_replicator_api_wrap.erl
@@ -83,9 +83,20 @@ db_open(#httpdb{} = Db1, _Options, Create) ->
                     ok
                 end)
         end,
-        send_req(Db, [{method, head}],
-            fun(200, _, _) ->
-                {ok, Db};
+        send_req(Db, [{method, get}],
+            fun(200, _, {Props}) ->
+                UpdateSeq = get_value(<<"update_seq">>, Props),
+                InstanceStart = get_value(<<"instance_start_time">>, Props),
+                case {UpdateSeq, InstanceStart} of
+                    {undefined, _} ->
+                        throw({db_not_found, ?l2b(db_uri(Db))});
+                    {_, undefined} ->
+                        throw({db_not_found, ?l2b(db_uri(Db))});
+                    _ ->
+                        {ok, Db}
+                end;
+            (200, _, _Body) ->
+                 throw({db_not_found, ?l2b(db_uri(Db))});
             (401, _, _) ->
                 throw({unauthorized, ?l2b(db_uri(Db))});
             (_, _, _) ->

Reply via email to