Accept a Unix socket path with "//" in it

Client took any string with "//" in it that it could not use as a URL
for a bad URL, so a Unix socket path such as /run/app//api.sock gave an
invalid client. Only a string that starts with a scheme and "://", or
with "//", is taken for a URL now.
This commit is contained in:
yhirose committed 2026-10-16 23:52:15 -04:00
1 parent be5043a240
commit 560126bffc
2 files changed
+8 -2

No files matched your search

+4 -2
View File
@@ -17988,8 +17988,10 @@ inline Client::Client(const std::string &scheme_host_port,
cli_ = detail::make_unique<ClientImpl>(host, port, client_cert_path,
client_key_path);
}
} else if (scheme_host_port.find("//") != std::string::npos) {
// A URL, but not one this client can use, such as one with userinfo
} else if (scheme_host_port.compare(0, 2, "//") == 0 ||
scheme_host_port.find("://") < scheme_host_port.find('/')) {
// A URL, but not one this client can use, such as one with userinfo. A
// Unix socket path may have "//" further on.
cli_ = detail::make_unique<detail::InvalidClientImpl>();
} else {
// NOTE: Update TEST(UniversalClientImplTest, Ipv6LiteralAddress)