]> granicus.if.org Git - icinga2/commitdiff
Avoid evaluating unnecessary filters
authorGunnar Beutner <gunnar@beutner.name>
Wed, 14 Oct 2015 14:52:01 +0000 (16:52 +0200)
committerGunnar Beutner <gunnar@beutner.name>
Wed, 14 Oct 2015 14:52:01 +0000 (16:52 +0200)
refs #10360

lib/remote/filterutility.cpp

index 5070e2771f22eeb63e19eeeb9c89f17d51ca3f77..f48510699f0ded8132ccd3892e814c84943d8a50 100644 (file)
@@ -231,12 +231,6 @@ std::vector<Value> FilterUtility::GetFilterTargets(const QueryDescription& qd, c
                if (!query->Contains("type"))
                        BOOST_THROW_EXCEPTION(std::invalid_argument("Type must be specified when using a filter."));
 
-               String filter;
-               if (!query->Contains("filter"))
-                       filter = "true";
-               else
-                       filter = HttpUtility::GetLastParameter(query, "filter");
-
                String type = HttpUtility::GetLastParameter(query, "type");
 
                if (!provider->IsValidType(type))
@@ -249,7 +243,12 @@ std::vector<Value> FilterUtility::GetFilterTargets(const QueryDescription& qd, c
                frame.Sandboxed = true;
                Dictionary::Ptr uvars = new Dictionary();
 
-               Expression *ufilter = ConfigCompiler::CompileText("<API query>", filter);
+               Expression *ufilter = NULL;
+
+               if (query->Contains("filter")) {
+                       String filter = HttpUtility::GetLastParameter(query, "filter");
+                       ufilter = ConfigCompiler::CompileText("<API query>", filter);
+               }
 
                Dictionary::Ptr filter_vars = query->Get("filter_vars");
                if (filter_vars) {