mirror of
https://github.com/yhirose/cpp-httplib.git
synced 2025-05-10 09:43:51 +00:00
* Allow hex for ip6 literal addr, fix #1800 * Add UT for ipv6 + Universal client implementation * add /n at EOF
This commit is contained in:
parent
25b1e0d906
commit
98cc1ec344
@ -9213,7 +9213,7 @@ inline Client::Client(const std::string &scheme_host_port,
|
|||||||
const std::string &client_cert_path,
|
const std::string &client_cert_path,
|
||||||
const std::string &client_key_path) {
|
const std::string &client_key_path) {
|
||||||
const static std::regex re(
|
const static std::regex re(
|
||||||
R"((?:([a-z]+):\/\/)?(?:\[([\d:]+)\]|([^:/?#]+))(?::(\d+))?)");
|
R"((?:([a-z]+):\/\/)?(?:\[([a-fA-F\d:]+)\]|([^:/?#]+))(?::(\d+))?)");
|
||||||
|
|
||||||
std::smatch m;
|
std::smatch m;
|
||||||
if (std::regex_match(scheme_host_port, m, re)) {
|
if (std::regex_match(scheme_host_port, m, re)) {
|
||||||
@ -9250,6 +9250,8 @@ inline Client::Client(const std::string &scheme_host_port,
|
|||||||
client_key_path);
|
client_key_path);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// NOTE: Update TEST(UniversalClientImplTest, Ipv6LiteralAddress)
|
||||||
|
// if port param below changes.
|
||||||
cli_ = detail::make_unique<ClientImpl>(scheme_host_port, 80,
|
cli_ = detail::make_unique<ClientImpl>(scheme_host_port, 80,
|
||||||
client_cert_path, client_key_path);
|
client_cert_path, client_key_path);
|
||||||
}
|
}
|
||||||
|
15
test/test.cc
15
test/test.cc
@ -7373,3 +7373,18 @@ TEST(PathParamsTest, SequenceOfParams) {
|
|||||||
|
|
||||||
EXPECT_EQ(request.path_params, expected_params);
|
EXPECT_EQ(request.path_params, expected_params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(UniversalClientImplTest, Ipv6LiteralAddress) {
|
||||||
|
// If ipv6 regex working, regex match codepath is taken.
|
||||||
|
// else port will default to 80 in Client impl
|
||||||
|
int clientImplMagicPort = 80;
|
||||||
|
int port = 4321;
|
||||||
|
// above ports must be different to avoid false negative
|
||||||
|
EXPECT_NE(clientImplMagicPort, port);
|
||||||
|
|
||||||
|
std::string ipV6TestURL = "http://[ff06::c3]";
|
||||||
|
|
||||||
|
Client cli(ipV6TestURL + ":" + std::to_string(port), CLIENT_CERT_FILE,
|
||||||
|
CLIENT_PRIVATE_KEY_FILE);
|
||||||
|
EXPECT_EQ(cli.port(), port);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user