[Lldb-commits] [lldb] [lldb] Fix the SocketTest failure on unsupported hosts (PR #118673)
Vladislav Dzhidzhoev via lldb-commits
lldb-commits at lists.llvm.org
Thu Dec 5 05:54:34 PST 2024
================
@@ -116,6 +116,24 @@ bool lldb_private::HostSupportsIPv6() {
return CheckIPSupport("IPv6", "[::1]:0");
}
+bool lldb_private::HostSupportsLocalhostToIPv4() {
+ if (!HostSupportsIPv4())
+ return false;
+
+ auto addresses = SocketAddress::GetAddressInfo("localhost", nullptr, AF_INET,
+ SOCK_STREAM, IPPROTO_TCP);
+ return !addresses.empty();
+}
+
+bool lldb_private::HostSupportsLocalhostToIPv6() {
+ if (!HostSupportsIPv6())
+ return false;
+
+ auto addresses = SocketAddress::GetAddressInfo("localhost", nullptr, AF_INET6,
+ SOCK_STREAM, IPPROTO_TCP);
----------------
dzhidzhoev wrote:
I've got
```
llvm-project git:(becab1c1b0a3) cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 ubuntu-linux-22-04-desktop
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
```
For some reason, `getaddrinfo("localhost", AF_UNSPEC, ...)` returns only one address (IPv4 `127.0.0.1`), but `getaddrinfo("localhost", AF_INET6, ...)` returns an address as well (IPv6 `::1`).
I think it's probably an oddity in getaddrinfo implementation (my gai.conf is empty). This check seems to work the way expected:
```
auto addresses = SocketAddress::GetAddressInfo(
"localhost", nullptr, AF_UNSPEC, SOCK_STREAM, IPPROTO_TCP);
return std::find_if(addresses.begin(), addresses.end(),
[](SocketAddress &addr) {
return addr.GetFamily() == AF_INET6;
}) != addresses.end();
```
https://github.com/llvm/llvm-project/pull/118673
More information about the lldb-commits
mailing list