summaryrefslogtreecommitdiff
path: root/src/couchdb/couch_rep.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/couchdb/couch_rep.erl')
-rw-r--r--src/couchdb/couch_rep.erl10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/couchdb/couch_rep.erl b/src/couchdb/couch_rep.erl
index cde0a85e..592693ee 100644
--- a/src/couchdb/couch_rep.erl
+++ b/src/couchdb/couch_rep.erl
@@ -54,7 +54,7 @@ replicate(Source, Target) when is_binary(Source), is_binary(Target) ->
replicate({[{<<"source">>, Source}, {<<"target">>, Target}]}, #user_ctx{});
%% function handling POST to _replicate
-replicate(PostBody, UserCtx) ->
+replicate({Props}=PostBody, UserCtx) ->
RepId = make_replication_id(PostBody, UserCtx),
Replicator = {RepId,
{gen_server, start_link, [?MODULE, [RepId, PostBody, UserCtx], []]},
@@ -66,6 +66,14 @@ replicate(PostBody, UserCtx) ->
Server = start_replication_server(Replicator),
+ case proplists:get_value(<<"continuous">>, Props, false) of
+ true ->
+ {ok, {continuous, ?l2b(RepId)}};
+ false ->
+ get_result(Server, PostBody, UserCtx)
+ end.
+
+get_result(Server, PostBody, UserCtx) ->
try gen_server:call(Server, get_result, infinity) of
retry -> replicate(PostBody, UserCtx);
Else -> Else