diff --git a/httplib.h b/httplib.h index aef0c1ec79..44f1da4c40 100644 --- a/httplib.h +++ b/httplib.h @@ -396,7 +396,7 @@ struct hash { } }; -}; // namespace case_ignore +} // namespace case_ignore // This is based on // "http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4189". @@ -4114,7 +4114,7 @@ inline bool parse_header(const char *beg, const char *end, T fn) { p++; } - if (p < end) { + if (p <= end) { auto key_len = key_end - beg; if (!key_len) { return false; } diff --git a/test/test.cc b/test/test.cc index 0cd450e763..612304b371 100644 --- a/test/test.cc +++ b/test/test.cc @@ -4922,6 +4922,15 @@ TEST(ServerRequestParsingTest, InvalidFieldValueContains_CR_LF_NUL) { EXPECT_EQ("HTTP/1.1 400 Bad Request", out.substr(0, 24)); } +TEST(ServerRequestParsingTest, EmptyFieldValue) { + std::string out; + + test_raw_request("GET /header_field_value_check HTTP/1.1\r\n" + "Test: \r\n\r\n", + &out); + EXPECT_EQ("HTTP/1.1 200 OK", out.substr(0, 15)); +} + TEST(ServerStopTest, StopServerWithChunkedTransmission) { Server svr;