diff --git a/lldb/source/Host/common/TCPSocket.cpp b/lldb/source/Host/common/TCPSocket.cpp --- a/lldb/source/Host/common/TCPSocket.cpp +++ b/lldb/source/Host/common/TCPSocket.cpp @@ -162,6 +162,12 @@ std::vector addresses = SocketAddress::GetAddressInfo( host_str.c_str(), nullptr, AF_UNSPEC, SOCK_STREAM, IPPROTO_TCP); + // IPv4 is more likely to succeed than IPv6. To avoid costly retries, + // we sort based on family to prioritize IPv4 over IPv6. + std::sort(addresses.begin(), addresses.end(), + [](SocketAddress a, SocketAddress b) { + return a.GetFamily() < b.GetFamily(); + }); for (SocketAddress &address : addresses) { error = CreateSocket(address.GetFamily()); if (error.Fail())