# HG changeset patch # User František Kučera # Date 1659646157 -7200 # Node ID a910051cd9757114ed6d05c0aebe8e494c29a703 # Parent 6a6b9350785629bc9d5cce8d1688ed78cd6b4064 getaddrinfo(): get only IPv4 TCP addresses diff -r 6a6b93507856 -r a910051cd975 src/Socket.cpp --- a/src/Socket.cpp Thu Aug 04 02:13:22 2022 +0200 +++ b/src/Socket.cpp Thu Aug 04 22:49:17 2022 +0200 @@ -81,13 +81,20 @@ static in_addr_t getAddress(const std::string& host) { + struct addrinfo query; + memset(&query, sizeof (query), 0); + query.ai_family = AF_INET; + query.ai_socktype = SOCK_STREAM; + query.ai_protocol = IPPROTO_TCP; + query.ai_flags = AI_ALL; + struct addrinfo* addrInfo; - check(getaddrinfo(host.c_str(), "", nullptr, &addrInfo), "getaddrinfo"); + check(getaddrinfo(host.c_str(), "", &query, &addrInfo), "getaddrinfo"); std::cerr << "found: " << addrInfo << std::endl; if (addrInfo) { for (addrinfo* ai = addrInfo; ai; ai = ai->ai_next) { - std::cerr << "address info: family=" << std::to_string(ai->ai_addr->sa_family); + std::cerr << "address info: family=" << std::to_string(ai->ai_addr->sa_family) << " socktype=" << std::to_string(ai->ai_socktype) << " protocol=" << std::to_string(ai->ai_protocol); if (sockaddr_in * sa = castAddress(ai, AF_INET)) std::cerr << " IPv4=" << ip2string(ai); else if (sockaddr_in6 * sa = castAddress(ai, AF_INET6)) std::cerr << " IPv6=" << ip2string(ai); std::cerr << std::endl;