From: Gunnar Beutner <gunnar@beutner.name>
Date: Tue, 11 Aug 2015 07:31:28 +0000 (+0200)
Subject: Fix URL handlers
X-Git-Tag: v2.4.0~433
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=73b72544ee2d73253d8babd557768bf268bfdae2;p=icinga2

Fix URL handlers

refs #9768
---

diff --git a/lib/remote/httphandler.cpp b/lib/remote/httphandler.cpp
index 8e42df13c..5b93e2cae 100644
--- a/lib/remote/httphandler.cpp
+++ b/lib/remote/httphandler.cpp
@@ -62,8 +62,9 @@ void HttpHandler::ProcessRequest(const ApiUser::Ptr& user, HttpRequest& request,
 {
 	Dictionary::Ptr node = m_UrlTree;
 	std::vector<HttpHandler::Ptr> handlers;
+	const std::vector<String>& path = request.RequestUrl->GetPath();
 
-	BOOST_FOREACH(const String& elem, request.RequestUrl->GetPath()) {
+	for (int i = 0; i <= path.size(); i++) {
 		Array::Ptr current_handlers = node->Get("handlers");
 
 		if (current_handlers) {
@@ -80,7 +81,10 @@ void HttpHandler::ProcessRequest(const ApiUser::Ptr& user, HttpRequest& request,
 			break;
 		}
 
-		node = children->Get(elem);
+		if (i == path.size())
+			break;
+
+		node = children->Get(path[i]);
 
 		if (!node)
 			break;