diff options
author | Robert Newson <robert.newson@cloudant.com> | 2011-11-09 13:08:49 +0000 |
---|---|---|
committer | Adam Kocoloski <adam@cloudant.com> | 2011-11-09 14:30:11 -0500 |
commit | 223646af60465522572cfea014f35bfa68496d0e (patch) | |
tree | bf36944d9918bf6b4b1e6d106c1b4e5973574eb4 | |
parent | e0dd9f36cb405535708886e6451c0521a47b9fc1 (diff) |
Conditionally apply JSON encoding to update_seq values
BigCouch 0.3 cannot parse requests of the form /db/_changes?since="123-foo" so
the recent ?JSON_ENCODE addition to Since in two places causes 0.3 <-> 0.4
replication to fail with json_encode/badterm errors.
This patch applies JSON encoding only when the Since value is not already a
binary (i.e, when it's a [integer(), binary()]) and interop is restored.
BugzID: 12833
-rw-r--r-- | apps/couch/src/couch_rep.erl | 3 | ||||
-rw-r--r-- | apps/couch/src/couch_rep_changes_feed.erl | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/apps/couch/src/couch_rep.erl b/apps/couch/src/couch_rep.erl index 8f2508f5..82b69bc9 100644 --- a/apps/couch/src/couch_rep.erl +++ b/apps/couch/src/couch_rep.erl @@ -834,7 +834,8 @@ ensure_full_commit(#http_db{headers = Headers} = Source, RequiredSeq) -> Req = Source#http_db{ resource = "_ensure_full_commit", method = post, - qs = [{seq, iolist_to_binary(?JSON_ENCODE(RequiredSeq))}], + qs = [{seq, case RequiredSeq of Bin when is_binary(Bin) -> Bin; + Else -> iolist_to_binary(?JSON_ENCODE(Else)) end}], headers = Headers1 }, {ResultProps} = couch_rep_httpc:request(Req), diff --git a/apps/couch/src/couch_rep_changes_feed.erl b/apps/couch/src/couch_rep_changes_feed.erl index 70db52a0..651069fb 100644 --- a/apps/couch/src/couch_rep_changes_feed.erl +++ b/apps/couch/src/couch_rep_changes_feed.erl @@ -64,7 +64,8 @@ init([Parent, #http_db{headers = Headers0} = Source, Since, PostProps]) -> BaseQS = [ {"style", all_docs}, {"heartbeat", 10000}, - {"since", iolist_to_binary(?JSON_ENCODE(Since))}, + {"since", case Since of Bin when is_binary(Bin) -> Bin; + Else -> iolist_to_binary(?JSON_ENCODE(Else)) end}, {"feed", Feed} ], {QS, Method, Body, Headers} = case get_value(<<"doc_ids">>, PostProps) of |