summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--THANKS1
-rw-r--r--share/www/script/couch_tests.js11
-rw-r--r--src/couchdb/couch_rep.erl2
3 files changed, 13 insertions, 1 deletions
diff --git a/THANKS b/THANKS
index 0f6b8bd4..2b8b5011 100644
--- a/THANKS
+++ b/THANKS
@@ -14,6 +14,7 @@ Some of these people are:
* Michael Gottesman <gottesmm@reed.edu>
* Michael Hendricks <michael@ndrix.org>
* Till Klampaeckel <till@klampaeckel.de>
+ * Adam Kocoloski <adam.kocoloski@gmail.com>
* Roger Leigh <rleigh@debian.org>
* Jim Lindley <web@jimlindley.com>
* Sam Ruby <rubys@intertwingly.net>
diff --git a/share/www/script/couch_tests.js b/share/www/script/couch_tests.js
index ccb9755d..2553df9b 100644
--- a/share/www/script/couch_tests.js
+++ b/share/www/script/couch_tests.js
@@ -1615,6 +1615,17 @@ var tests = {
T(docA._rev == docB._rev);
}
+ // check documents with a '/' in the ID
+ // need to re-encode the slash when replicating from a remote source
+ dbA.save({ _id:"abc/def", val:"one" });
+
+ T(CouchDB.replicate(A, B).ok);
+ T(CouchDB.replicate(B, A).ok);
+
+ docA = dbA.open("abc/def");
+ docB = dbB.open("abc/def");
+ T(docA._rev == docB._rev);
+
// now check binary attachments
var binDoc = {
_id:"bin_doc",
diff --git a/src/couchdb/couch_rep.erl b/src/couchdb/couch_rep.erl
index 2eb59ddb..c91364c8 100644
--- a/src/couchdb/couch_rep.erl
+++ b/src/couchdb/couch_rep.erl
@@ -343,7 +343,7 @@ open_doc_revs(DbUrl, DocId, Revs, Options) when is_list(DbUrl) ->
"latest=true"
end, Options),
RevsQueryStrs = lists:flatten(?JSON_ENCODE(Revs)),
- Url = DbUrl ++ binary_to_list(DocId) ++ "?" ++ couch_util:implode(["revs=true", "attachments=true", "open_revs=" ++ RevsQueryStrs ] ++ QueryOptionStrs, "&"),
+ Url = DbUrl ++ url_encode(DocId) ++ "?" ++ couch_util:implode(["revs=true", "attachments=true", "open_revs=" ++ RevsQueryStrs ] ++ QueryOptionStrs, "&"),
JsonResults = do_http_request(Url, get, []),
Results =
lists:map(