diff --git a/http/routing.h b/http/routing.h
index 7b9086a..2302658 100644
--- a/http/routing.h
+++ b/http/routing.h
@@ -28,9 +28,6 @@
 namespace crow
 {
 
-constexpr int maxHttpVerbCount =
-    static_cast<int>(boost::beast::http::verb::unlink);
-
 class BaseRule
 {
   public:
@@ -1059,7 +1056,7 @@
         {
             return;
         }
-        for (uint32_t method = 0, methodBit = 1; method < maxHttpVerbCount;
+        for (size_t method = 0, methodBit = 1; method < maxHttpVerbCount;
              method++, methodBit <<= 1)
         {
             if (ruleObject->methodsBitfield & methodBit)
@@ -1104,7 +1101,11 @@
     void handleUpgrade(const Request& req, Response& res, Adaptor&& adaptor)
     {
         if (static_cast<size_t>(req.method()) >= perMethods.size())
+        {
+            res.result(boost::beast::http::status::not_found);
+            res.end();
             return;
+        }
 
         PerMethod& perMethod = perMethods[static_cast<size_t>(req.method())];
         Trie& trie = perMethod.trie;
@@ -1189,7 +1190,11 @@
     void handle(Request& req, Response& res)
     {
         if (static_cast<size_t>(req.method()) >= perMethods.size())
+        {
+            res.result(boost::beast::http::status::not_found);
+            res.end();
             return;
+        }
         PerMethod& perMethod = perMethods[static_cast<size_t>(req.method())];
         Trie& trie = perMethod.trie;
         std::vector<BaseRule*>& rules = perMethod.rules;
@@ -1416,6 +1421,10 @@
         PerMethod() : rules(2)
         {}
     };
+
+    const static size_t maxHttpVerbCount =
+        static_cast<size_t>(boost::beast::http::verb::trace);
+
     std::array<PerMethod, maxHttpVerbCount> perMethods;
     std::vector<std::unique_ptr<BaseRule>> allRules;
 };
