Skip to content

Commit 9eebbd3

Browse files
committed
1. Switched to utility::details::str_icmp() to do header value
comparisons 2. Added test case to test overwriting the host header
1 parent f41a04b commit 9eebbd3

File tree

2 files changed

+33
-3
lines changed

2 files changed

+33
-3
lines changed

Release/include/cpprest/details/http_client_impl.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,7 @@ static utility::string_t flatten_http_headers(const http_headers &headers)
5858
for(auto iter = headers.begin(); iter != headers.end(); ++iter)
5959
{
6060
utility::string_t header_name = iter->first;
61-
http_headers::_case_insensitive_cmp cmp;
62-
if (!cmp(header_name, header_names::host) && !cmp(header_names::host, header_name)) {
61+
if (utility::details::str_icmp(header_name, header_names::host)) {
6362
continue;
6463
}
6564
flattened_headers.append(iter->first);

Release/tests/functional/http/client/header_tests.cpp

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,37 @@ TEST_FIXTURE(uri_address, parsing_content_type_redundantsemicolon_string)
382382
auto resp = client.request(methods::GET).get();
383383
VERIFY_ARE_EQUAL(resp.extract_string().get(), utility::conversions::to_string_t(body));
384384
}
385+
386+
TEST_FIXTURE(uri_address, overwrite_http_header)
387+
{
388+
test_http_server::scoped_server scoped(m_uri);
389+
http_client client(m_uri);
390+
391+
// Test default case of cpprestsdk setting host header as host:port
392+
auto& host = m_uri.host();
393+
int port = m_uri.port();
394+
utility::string_t expected_default_header = host + ":" + std::to_string(port);
395+
http_request default_host_headers_request(methods::GET);
396+
scoped.server()->next_request().then([&](test_request *p_request)
397+
{
398+
auto headers = p_request->m_headers;
399+
VERIFY_ARE_EQUAL(expected_default_header, headers[header_names::host]);
400+
p_request->reply(200);
401+
});
402+
403+
client.request(default_host_headers_request).get();
404+
405+
// Test case where we overwrite the host header
406+
http_request overwritten_host_headers_request(methods::GET);
407+
overwritten_host_headers_request.headers().add("Host", host);
408+
scoped.server()->next_request().then([&](test_request *p_request)
409+
{
410+
auto headers = p_request->m_headers;
411+
VERIFY_ARE_EQUAL(host, headers[header_names::host]);
412+
p_request->reply(200);
413+
});
414+
client.request(overwritten_host_headers_request).get();
415+
}
385416
} // SUITE(header_tests)
386417

387-
}}}}
418+
}}}}

0 commit comments

Comments
 (0)