You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by fd...@apache.org on 2011/11/17 15:16:14 UTC

git commit: Fix replicator doc GET requests for many revisions

Updated Branches:
  refs/heads/1.1.x 2f6743b3a -> 6aa81c639


Fix replicator doc GET requests for many revisions

Mochiweb limits request lines up to 8192 characters but the
replicator wasn't accounting for the verb and protocol parts
of the first request line ("GET " + " HTTP/1.1\r\n")

Closes COUCHDB-1340.


Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/6aa81c63
Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/6aa81c63
Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/6aa81c63

Branch: refs/heads/1.1.x
Commit: 6aa81c6398bbb1ca4f22d98275c175c2ae8dbde4
Parents: 2f6743b
Author: Filipe David Borba Manana <fd...@apache.org>
Authored: Thu Nov 17 14:08:36 2011 +0000
Committer: Filipe David Borba Manana <fd...@apache.org>
Committed: Thu Nov 17 14:08:36 2011 +0000

----------------------------------------------------------------------
 src/couchdb/couch_rep_reader.erl |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb/blob/6aa81c63/src/couchdb/couch_rep_reader.erl
----------------------------------------------------------------------
diff --git a/src/couchdb/couch_rep_reader.erl b/src/couchdb/couch_rep_reader.erl
index 1e8ca07..0dca225 100644
--- a/src/couchdb/couch_rep_reader.erl
+++ b/src/couchdb/couch_rep_reader.erl
@@ -177,7 +177,7 @@ calculate_new_high_seq(State) ->
     hd(State#state.opened_seqs).
 
 split_revlist(Rev, {[CurrentAcc|Rest], BaseLength, Length}) ->
-    case Length+size(Rev)+3 > 8192 of
+    case Length+size(Rev)+3 >= 8192 of
     false ->
         {[[Rev|CurrentAcc] | Rest], BaseLength, Length+size(Rev)+3};
     true ->
@@ -214,7 +214,9 @@ open_doc_revs(#http_db{url = Url} = DbS, DocId, Revs) ->
     %% MochiWeb into multiple requests
     BaseQS = [{revs,true}, {latest,true}, {att_encoding_info,true}],
     BaseReq = DbS#http_db{resource=encode_doc_id(DocId), qs=BaseQS},
-    BaseLength = length(couch_rep_httpc:full_url(BaseReq) ++ "&open_revs=[]"),
+    BaseLength = length(
+        "GET " ++ couch_rep_httpc:full_url(BaseReq) ++
+        "&open_revs=[]" ++ " HTTP/1.1\r\n"),
 
     {RevLists, _, _} = lists:foldl(fun split_revlist/2,
         {[[]], BaseLength, BaseLength}, couch_doc:revs_to_strs(Revs)),