From: Jean Flach Date: Tue, 1 Mar 2016 15:53:52 +0000 (+0100) Subject: Fix delete object handler returning incorrect status codes X-Git-Tag: v2.4.4~12 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4cf33b74f2790649860228b171d69783a4389b1e;p=icinga2 Fix delete object handler returning incorrect status codes Now a 200 OK only gets returned if all objects could be deleted fixes #10770 --- diff --git a/lib/remote/deleteobjecthandler.cpp b/lib/remote/deleteobjecthandler.cpp index efdeb1fac..234e8f60e 100644 --- a/lib/remote/deleteobjecthandler.cpp +++ b/lib/remote/deleteobjecthandler.cpp @@ -76,6 +76,8 @@ bool DeleteObjectHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& r Array::Ptr results = new Array(); + bool success = true; + BOOST_FOREACH(const ConfigObject::Ptr& obj, objs) { Dictionary::Ptr result1 = new Dictionary(); result1->Set("type", type->GetName()); @@ -88,6 +90,7 @@ bool DeleteObjectHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& r result1->Set("code", 500); result1->Set("status", "Object could not be deleted."); result1->Set("errors", errors); + success = false; } else { result1->Set("code", 200); result1->Set("status", "Object was deleted."); @@ -97,7 +100,11 @@ bool DeleteObjectHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& r Dictionary::Ptr result = new Dictionary(); result->Set("results", results); - response.SetStatus(200, "OK"); + if (!success) + response.SetStatus(500, "One or more objects could not be deleted"); + else + response.SetStatus(200, "OK"); + HttpUtility::SendJsonBody(response, result); return true;