]> granicus.if.org Git - icinga2/commitdiff
Fix delete object handler returning incorrect status codes
authorJean Flach <jean-marcel.flach@netways.de>
Tue, 1 Mar 2016 15:53:52 +0000 (16:53 +0100)
committerMichael Friedrich <michael.friedrich@netways.de>
Fri, 11 Mar 2016 14:59:52 +0000 (15:59 +0100)
Now a 200 OK only gets returned if all objects could be deleted

fixes #10770

lib/remote/deleteobjecthandler.cpp

index efdeb1facb0ec890c5627cef7f11730af6320a7e..234e8f60e3bd5c72f263934388cb5632591111db 100644 (file)
@@ -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;