From d01e32c3786f2fbbb70c9724a87cf979b4a06232 Mon Sep 17 00:00:00 2001 From: Ed Tanous Date: Tue, 10 May 2022 16:01:17 -0700 Subject: Revert "Handle HEAD and Allow headers per the spec" This reverts commit 867b2056d44300db9769e0d0b8883435a179834c. Apparently we have broken the Redfish spec in a way that adding this feature now allows the service validator to find. @odata.id /redfish/v1/UpdateService ERROR - Allow header should NOT contain POST for UpdateService.v1_5_0.UpdateService Need to figure out what to do, but for now, revert to get the build passing again. Change-Id: Ieef20573b9caa03aba6fd2bbc999e517e4b7de3d Signed-off-by: Ed Tanous --- http/routing.hpp | 53 +++++++++++------------------------------------------ 1 file changed, 11 insertions(+), 42 deletions(-) (limited to 'http/routing.hpp') diff --git a/http/routing.hpp b/http/routing.hpp index 7bac283437..5f29761edd 100644 --- a/http/routing.hpp +++ b/http/routing.hpp @@ -12,7 +12,6 @@ #include "websocket.hpp" #include -#include #include #include @@ -1209,30 +1208,6 @@ class Router } } - std::string buildAllowHeader(Request& req) - { - std::string allowHeader; - // Check to see if this url exists at any verb - for (size_t perMethodIndex = 0; perMethodIndex < perMethods.size(); - perMethodIndex++) - { - const PerMethod& p = perMethods[perMethodIndex]; - const std::pair& found2 = - p.trie.find(req.url); - if (found2.first == 0) - { - continue; - } - if (!allowHeader.empty()) - { - allowHeader += ", "; - } - allowHeader += boost::beast::http::to_string( - static_cast(perMethodIndex)); - } - return allowHeader; - } - void handle(Request& req, const std::shared_ptr& asyncResp) { @@ -1244,31 +1219,25 @@ class Router PerMethod& perMethod = perMethods[static_cast(req.method())]; Trie& trie = perMethod.trie; std::vector& rules = perMethod.rules; - std::string allowHeader = buildAllowHeader(req); - if (!allowHeader.empty()) - { - asyncResp->res.addHeader(boost::beast::http::field::allow, - allowHeader); - - // If this is a header request, we're done. - if (req.method() == boost::beast::http::verb::head) - { - return; - } - } const std::pair& found = trie.find(req.url); unsigned ruleIndex = found.first; + if (ruleIndex == 0U) { - if (!allowHeader.empty()) + // Check to see if this url exists at any verb + for (const PerMethod& p : perMethods) { - asyncResp->res.result( - boost::beast::http::status::method_not_allowed); - return; + const std::pair& found2 = + p.trie.find(req.url); + if (found2.first > 0) + { + asyncResp->res.result( + boost::beast::http::status::method_not_allowed); + return; + } } - BMCWEB_LOG_DEBUG << "Cannot match rules " << req.url; asyncResp->res.result(boost::beast::http::status::not_found); return; -- cgit v1.2.3