diff options
author | Ed Tanous <edtanous@google.com> | 2022-05-11 02:01:17 +0300 |
---|---|---|
committer | Ed Tanous <edtanous@google.com> | 2022-05-11 02:02:36 +0300 |
commit | d01e32c3786f2fbbb70c9724a87cf979b4a06232 (patch) | |
tree | 2b0618b7cfa94ead72eb0d3d02338cdfd7cc03d3 /http/routing.hpp | |
parent | 867b2056d44300db9769e0d0b8883435a179834c (diff) | |
download | bmcweb-d01e32c3786f2fbbb70c9724a87cf979b4a06232.tar.xz |
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 <edtanous@google.com>
Diffstat (limited to 'http/routing.hpp')
-rw-r--r-- | http/routing.hpp | 53 |
1 files changed, 11 insertions, 42 deletions
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 <async_resp.hpp> -#include <boost/beast/ssl/ssl_stream.hpp> #include <boost/container/flat_map.hpp> #include <cerrno> @@ -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<unsigned, RoutingParams>& found2 = - p.trie.find(req.url); - if (found2.first == 0) - { - continue; - } - if (!allowHeader.empty()) - { - allowHeader += ", "; - } - allowHeader += boost::beast::http::to_string( - static_cast<boost::beast::http::verb>(perMethodIndex)); - } - return allowHeader; - } - void handle(Request& req, const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) { @@ -1244,31 +1219,25 @@ class Router PerMethod& perMethod = perMethods[static_cast<size_t>(req.method())]; Trie& trie = perMethod.trie; std::vector<BaseRule*>& 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<unsigned, RoutingParams>& 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<unsigned, RoutingParams>& 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; |