summaryrefslogtreecommitdiff
path: root/apps/couch/src/couch_rep_writer.erl
diff options
context:
space:
mode:
Diffstat (limited to 'apps/couch/src/couch_rep_writer.erl')
-rw-r--r--apps/couch/src/couch_rep_writer.erl19
1 files changed, 12 insertions, 7 deletions
diff --git a/apps/couch/src/couch_rep_writer.erl b/apps/couch/src/couch_rep_writer.erl
index 40323925..6f557107 100644
--- a/apps/couch/src/couch_rep_writer.erl
+++ b/apps/couch/src/couch_rep_writer.erl
@@ -126,13 +126,18 @@ write_multi_part_doc(#http_db{headers=Headers} = Db, #doc{atts=Atts} = Doc) ->
{"Content-Length", Len} | Headers
]
},
- Result = case couch_rep_httpc:request(Request) of
- {[{<<"error">>, Error}, {<<"reason">>, Reason}]} ->
- {Pos, [RevId | _]} = Doc#doc.revs,
- ErrId = couch_util:to_existing_atom(Error),
- [{Doc#doc.id, couch_doc:rev_to_str({Pos, RevId})}, {ErrId, Reason}];
- _ ->
- []
+ Conn = couch_rep_httpc:spawn_link_worker_process(Request),
+ Result = try
+ case couch_rep_httpc:request(Request) of
+ {[{<<"error">>, Error}, {<<"reason">>, Reason}]} ->
+ {Pos, [RevId | _]} = Doc#doc.revs,
+ ErrId = couch_util:to_existing_atom(Error),
+ [{Doc#doc.id, couch_doc:rev_to_str({Pos, RevId})}, {ErrId, Reason}];
+ _ ->
+ []
+ end
+ after
+ ibrowse:stop_worker_process(Conn)
end,
StreamerPid ! stop,
Result.