diff --git a/Source/TDRouter+Handlers.m b/Source/TDRouter+Handlers.m index e7562c9..dfdde01 100644 --- a/Source/TDRouter+Handlers.m +++ b/Source/TDRouter+Handlers.m @@ -295,14 +295,17 @@ - (TDStatus) do_POST_bulk_docs: (TD_Database*)db { Assert(rev.revID); if (!noNewEdits) result = $dict({@"id", rev.docID}, {@"rev", rev.revID}, {@"ok", $true}); + } else if (status >= 500) { + return status; // abort the whole thing if something goes badly wrong } else if (allOrNothing) { return status; // all_or_nothing backs out if there's any error - } else if (status == kTDStatusForbidden) { - result = $dict({@"id", docID}, {@"error", @"validation failed"}); - } else if (status == kTDStatusConflict) { - result = $dict({@"id", docID}, {@"error", @"conflict"}); } else { - return status; // abort the whole thing if something goes badly wrong + NSString* error = nil; + if (status == kTDStatusForbidden) + error = @"validation failed"; + else + TDStatusToHTTPStatus(status, &error); + result = $dict({@"id", docID}, {@"error", error}); } if (result) [results addObject: result]; diff --git a/Source/TDStatus.m b/Source/TDStatus.m index 5579b9c..4d6a949 100644 --- a/Source/TDStatus.m +++ b/Source/TDStatus.m @@ -27,6 +27,7 @@ static const struct StatusMapEntry kStatusMap[] = { {kTDStatusNotFound, 404, "not_found"}, // for compatibility with CouchDB + {kTDStatusConflict, 409, "conflict"}, {kTDStatusDuplicate, 412, "Already exists"}, // really 'Precondition Failed' {kTDStatusBadEncoding, 400, "Bad data encoding"},