srctree

Robin Linden parent b2275e35 02b96f5c
protocol/http: Don't include leading/trailing ws in header values

inlinesplit
protocol/http.cpp added: 5, removed: 3, total 2
@@ -85,6 +85,7 @@ Headers Http::parse_headers(std::string_view header) {
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), ": ");
if (is_valid_header(kv)) {
kv.second = util::trim(kv.second);
headers.add(std::move(kv));
}
 
@@ -93,6 +94,7 @@ Headers Http::parse_headers(std::string_view 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: 3, total 2
@@ -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{