diff options
author | Filipe David Borba Manana <fdmanana@apache.org> | 2010-10-16 18:25:12 +0000 |
---|---|---|
committer | Filipe David Borba Manana <fdmanana@apache.org> | 2010-10-16 18:25:12 +0000 |
commit | e0b39b55f581867327728f8e0af470144c77915a (patch) | |
tree | 6a647aee586f0917f31d15ac891f9d0fc92cb0a7 /src/couchdb/couch_rep_changes_feed.erl | |
parent | ec69a1b7916b8952fb8bcc8f054654d5681a9457 (diff) |
Replicator: deal with 303 HTTP redirects. Closes COUCHDB-918.
git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@1023345 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/couchdb/couch_rep_changes_feed.erl')
-rw-r--r-- | src/couchdb/couch_rep_changes_feed.erl | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/couchdb/couch_rep_changes_feed.erl b/src/couchdb/couch_rep_changes_feed.erl index 7f7d3a38..98e929fe 100644 --- a/src/couchdb/couch_rep_changes_feed.erl +++ b/src/couchdb/couch_rep_changes_feed.erl @@ -95,10 +95,10 @@ init([Parent, #http_db{}=Source, Since, PostProps]) -> {ibrowse_async_headers, ReqId, "200", _} -> ibrowse:stream_next(ReqId), {ok, #state{conn=Pid, last_seq=Since, reqid=ReqId, init_args=Args}}; - {ibrowse_async_headers, ReqId, Code, Hdrs} when Code=="301"; Code=="302" -> + {ibrowse_async_headers, ReqId, Code, Hdrs} + when Code =:= "301"; Code =:= "302"; Code =:= "303" -> stop_link_worker(Pid), - Url2 = couch_rep_httpc:redirect_url(Hdrs, Req#http_db.url), - Req2 = couch_rep_httpc:redirected_request(Req, Url2), + Req2 = couch_rep_httpc:redirected_request(Code, Hdrs, Req), Pid2 = couch_rep_httpc:spawn_link_worker_process(Req2), Req3 = Req2#http_db{conn = Pid2}, {ibrowse_req_id, ReqId2} = couch_rep_httpc:request(Req3), @@ -271,11 +271,10 @@ handle_headers(200, _, State) -> maybe_stream_next(State), {noreply, State}; handle_headers(Code, Hdrs, #state{init_args = InitArgs} = State) - when Code =:= 301 ; Code =:= 302 -> + when Code =:= 301 ; Code =:= 302 ; Code =:= 303 -> stop_link_worker(State#state.conn), - [Parent, #http_db{url = Url1} = Source, Since, PostProps] = InitArgs, - Url = couch_rep_httpc:redirect_url(Hdrs, Url1), - Source2 = couch_rep_httpc:redirected_request(Source, Url), + [Parent, Source, Since, PostProps] = InitArgs, + Source2 = couch_rep_httpc:redirected_request(Code, Hdrs, Source), Pid2 = couch_rep_httpc:spawn_link_worker_process(Source2), Source3 = Source2#http_db{conn = Pid2}, {ibrowse_req_id, ReqId} = couch_rep_httpc:request(Source3), |