net/ToString: check family==AF_INET6 instead of looking for colons

This commit is contained in:
Max Kellermann 2023-09-18 21:59:24 +02:00
parent 9398599816
commit 592649d3f2

View File

@ -70,13 +70,13 @@ ToString(SocketAddress address) noexcept
char host[NI_MAXHOST], serv[NI_MAXSERV]; char host[NI_MAXHOST], serv[NI_MAXSERV];
int ret = getnameinfo(address.GetAddress(), address.GetSize(), int ret = getnameinfo(address.GetAddress(), address.GetSize(),
host, sizeof(host), serv, sizeof(serv), host, sizeof(host), serv, sizeof(serv),
NI_NUMERICHOST|NI_NUMERICSERV); NI_NUMERICHOST | NI_NUMERICSERV);
if (ret != 0) if (ret != 0)
return "unknown"; return "unknown";
if (serv[0] != 0 && (serv[0] != '0' || serv[1] != 0)) { if (serv[0] != 0 && (serv[0] != '0' || serv[1] != 0)) {
#ifdef HAVE_IPV6 #ifdef HAVE_IPV6
if (std::strchr(host, ':') != nullptr) { if (address.GetFamily() == AF_INET6) {
return fmt::format("[{}]:{}", host, serv); return fmt::format("[{}]:{}", host, serv);
} }
#endif #endif