Skip to content

Commit

Permalink
Allow hex for ip6 literal addr, fix #1800 (#1830)
Browse files Browse the repository at this point in the history
* Allow hex for ip6 literal addr, fix #1800

* Add UT for ipv6 + Universal client implementation

* add /n at EOF
  • Loading branch information
seanpquinn committed May 26, 2024
1 parent 25b1e0d commit 98cc1ec
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
4 changes: 3 additions & 1 deletion httplib.h
Original file line number Diff line number Diff line change
Expand Up @@ -9213,7 +9213,7 @@ inline Client::Client(const std::string &scheme_host_port,
const std::string &client_cert_path,
const std::string &client_key_path) {
const static std::regex re(
R"((?:([a-z]+):\/\/)?(?:\[([\d:]+)\]|([^:/?#]+))(?::(\d+))?)");
R"((?:([a-z]+):\/\/)?(?:\[([a-fA-F\d:]+)\]|([^:/?#]+))(?::(\d+))?)");

std::smatch m;
if (std::regex_match(scheme_host_port, m, re)) {
Expand Down Expand Up @@ -9250,6 +9250,8 @@ inline Client::Client(const std::string &scheme_host_port,
client_key_path);
}
} else {
// NOTE: Update TEST(UniversalClientImplTest, Ipv6LiteralAddress)
// if port param below changes.
cli_ = detail::make_unique<ClientImpl>(scheme_host_port, 80,
client_cert_path, client_key_path);
}
Expand Down
15 changes: 15 additions & 0 deletions test/test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -7373,3 +7373,18 @@ TEST(PathParamsTest, SequenceOfParams) {

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);
}

0 comments on commit 98cc1ec

Please sign in to comment.