diff --git a/src/webservice/GetFlagsHandler.cpp b/src/webservice/GetFlagsHandler.cpp index ad8ea573c56..35db5d03f78 100644 --- a/src/webservice/GetFlagsHandler.cpp +++ b/src/webservice/GetFlagsHandler.cpp @@ -22,7 +22,7 @@ using proxygen::ResponseBuilder; using proxygen::UpgradeProtocol; void GetFlagsHandler::onRequest(std::unique_ptr headers) noexcept { - if (headers->getMethod().value() != HTTPMethod::GET) { + if (!headers->getMethod() || headers->getMethod().value() != HTTPMethod::GET) { // Unsupported method err_ = HttpCode::E_UNSUPPORTED_METHOD; return; diff --git a/src/webservice/GetStatsHandler.cpp b/src/webservice/GetStatsHandler.cpp index cc75b71b66f..4bb61d81461 100644 --- a/src/webservice/GetStatsHandler.cpp +++ b/src/webservice/GetStatsHandler.cpp @@ -24,7 +24,7 @@ using proxygen::ResponseBuilder; using proxygen::UpgradeProtocol; void GetStatsHandler::onRequest(std::unique_ptr headers) noexcept { - if (headers->getMethod().value() != HTTPMethod::GET) { + if (!headers->getMethod() || headers->getMethod().value() != HTTPMethod::GET) { // Unsupported method err_ = HttpCode::E_UNSUPPORTED_METHOD; return; diff --git a/src/webservice/Router.cpp b/src/webservice/Router.cpp index 12243d0bb8c..18741463750 100644 --- a/src/webservice/Router.cpp +++ b/src/webservice/Router.cpp @@ -104,6 +104,9 @@ proxygen::RequestHandler *Route::generateHandler(const std::string &path) const proxygen::RequestHandler *Router::dispatch(const proxygen::HTTPMessage *msg) const { for (Route *r = head_; r != nullptr; r = r->next()) { + if (!msg->getMethod()) { + break; + } if (r->matches(msg->getMethod().value(), msg->getPath())) { return r->generateHandler(msg->getPath()); } diff --git a/src/webservice/SetFlagsHandler.cpp b/src/webservice/SetFlagsHandler.cpp index 26b6f621232..dcb7506a970 100644 --- a/src/webservice/SetFlagsHandler.cpp +++ b/src/webservice/SetFlagsHandler.cpp @@ -21,7 +21,7 @@ using proxygen::ResponseBuilder; using proxygen::UpgradeProtocol; void SetFlagsHandler::onRequest(std::unique_ptr headers) noexcept { - if (headers->getMethod().value() != HTTPMethod::PUT) { + if (!headers->getMethod() || headers->getMethod().value() != HTTPMethod::PUT) { // Unsupported method err_ = HttpCode::E_UNSUPPORTED_METHOD; return; diff --git a/src/webservice/StatusHandler.cpp b/src/webservice/StatusHandler.cpp index a2ffb9c76b4..cae194362bd 100644 --- a/src/webservice/StatusHandler.cpp +++ b/src/webservice/StatusHandler.cpp @@ -20,7 +20,7 @@ using proxygen::ResponseBuilder; using proxygen::UpgradeProtocol; void StatusHandler::onRequest(std::unique_ptr headers) noexcept { - if (headers->getMethod().value() != HTTPMethod::GET) { + if (!headers->getMethod() || headers->getMethod().value() != HTTPMethod::GET) { // Unsupported method err_ = HttpCode::E_UNSUPPORTED_METHOD; return;