anchor.diff:      Continuous = couch_util:get_value(<<"continuous">>, PostProps, false),
       CreateTarget = couch_util:get_value(<<"create_target">>, PostProps, false),
   
  -    Source = open_db(SourceProps, UserCtx),
  -    Target = open_db(TargetProps, UserCtx, CreateTarget),
  +    ProxyParams = parse_proxy_params(
  +        couch_util:get_value(<<"proxy">>, PostProps, [])),
  +    Source = open_db(SourceProps, UserCtx, ProxyParams),
  +    Target = open_db(TargetProps, UserCtx, ProxyParams, CreateTarget),
   
       SourceInfo = dbinfo(Source),
       TargetInfo = dbinfo(Target),
  
positive.code:     T = NewDb#db.update_seq == Seq,
      couch_db:close(NewDb),
      T.
  
negative.code:         #doc{id=DocId}
      end.
  
  open_db(Props, UserCtx, ProxyParams) ->
      open_db(Props, UserCtx, ProxyParams, false).
  
  open_db({Props}, _UserCtx, ProxyParams, CreateTarget) ->
      Url = maybe_add_trailing_slash(couch_util:get_value(<<"url">>, Props)),
      {AuthProps} = couch_util:get_value(<<"auth">>, Props, {[]}),
      {BinHeaders} = couch_util:get_value(<<"headers">>, Props, {[]}),
      Headers = [{?b2l(K),?b2l(V)} || {K,V} <- BinHeaders],
      DefaultHeaders = (#http_db{})#http_db.headers,
      Db1 = #http_db{
          url = Url,
          auth = AuthProps,
          headers = lists:ukeymerge(1, Headers, DefaultHeaders)
      },
      Db = Db1#http_db{options = Db1#http_db.options ++ ProxyParams},
      couch_rep_httpc:db_exists(Db, CreateTarget);
  open_db(<<"http://",_/binary>>=Url, _, ProxyParams, CreateTarget) ->
      open_db({[{<<"url">>,Url}]}, [], ProxyParams, CreateTarget);
  open_db(<<"https://",_/binary>>=Url, _, ProxyParams, CreateTarget) ->
      open_db({[{<<"url">>,Url}]}, [], ProxyParams, CreateTarget);
  open_db(<<DbName/binary>>, UserCtx, _ProxyParams, CreateTarget) ->
      case CreateTarget of
      true ->
          ok = couch_httpd:verify_is_server_admin(UserCtx),
  