srctree

Robin Linden parent 02b96f5c 17caef4e
protocol/http: Don't require whitespace before the header value

inlinesplit
protocol/http.cpp added: 5, removed: 5, total 0
@@ -83,7 +83,7 @@ std::optional<StatusLine> Http::parse_status_line(std::string_view status_line)
Headers Http::parse_headers(std::string_view header) {
Headers headers;
for (auto sep = header.find("\r\n"); sep != std::string_view::npos; sep = header.find("\r\n")) {
auto kv = util::split_once(header.substr(0, sep), ": ");
auto kv = util::split_once(header.substr(0, sep), ":");
if (is_valid_header(kv)) {
kv.second = util::trim(kv.second);
headers.add(std::move(kv));
@@ -92,7 +92,7 @@ Headers Http::parse_headers(std::string_view header) {
header.remove_prefix(sep + 2);
}
 
auto kv = util::split_once(header, ": ");
auto kv = util::split_once(header, ":");
if (is_valid_header(kv)) {
kv.second = util::trim(kv.second);
headers.add(std::move(kv));
 
protocol/http_test.cpp added: 5, removed: 5, total 0
@@ -288,7 +288,7 @@ int main() {
});
 
etest::test("mixed valid and invalid headers", [] {
FakeSocket socket{.read_data = "HTTP/1.1 200 OK\r\none: 1\r\nBAD\r\ntwo: 2 \r\n\r\n"};
FakeSocket socket{.read_data = "HTTP/1.1 200 OK\r\none: 1\r\nBAD\r\ntwo:2 \r\n\r\n"};
auto response = protocol::Http::get(socket, create_uri(), std::nullopt);
expect_eq(response,
protocol::Response{