From: Steinar H. Gunderson Date: Mon, 16 Apr 2018 19:06:25 +0000 (+0200) Subject: Unbreak header parsing; it was broken by the case-sensitivity fixes. X-Git-Tag: 1.4.0~14 X-Git-Url: https://git.sesse.net/?p=cubemap;a=commitdiff_plain;h=c40f564da8252a344be0de5c5e1b29a8d5d9aff6 Unbreak header parsing; it was broken by the case-sensitivity fixes. --- 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);