From c40f564da8252a344be0de5c5e1b29a8d5d9aff6 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Mon, 16 Apr 2018 21:06:25 +0200 Subject: [PATCH] Unbreak header parsing; it was broken by the case-sensitivity fixes. --- parse.h | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/parse.h b/parse.h index a2e3580..70b3b5a 100644 --- a/parse.h +++ b/parse.h @@ -21,14 +21,15 @@ static inline char ascii_tolower(const char ch) } // Case-insensitive header comparison and hashing. -struct HTTPLess { +struct HTTPEqual { bool operator() (const std::string &a, const std::string &b) const { - return std::lexicographical_compare( - begin(a), end(a), begin(b), end(b), - [](char a, char b) { - return ascii_tolower(a) < ascii_tolower(b); - }); + return a.size() == b.size() && + std::equal( + begin(a), end(a), begin(b), + [](char a, char b) { + return ascii_tolower(a) == ascii_tolower(b); + }); } }; struct HTTPHash { @@ -39,7 +40,7 @@ struct HTTPHash { return std::hash() (s_low); } }; -using HTTPHeaderMultimap = std::unordered_multimap; +using HTTPHeaderMultimap = std::unordered_multimap; // Split a line on whitespace, e.g. "foo bar baz" -> {"foo", "bar", "baz"}. std::vector split_tokens(const std::string &line); -- 2.39.2