Changeset View
Changeset View
Standalone View
Standalone View
src/netbase.cpp
Show First 20 Lines • Show All 85 Lines • ▼ Show 20 Lines | #endif | ||||
struct addrinfo *aiTrav = aiRes; | struct addrinfo *aiTrav = aiRes; | ||||
while (aiTrav != nullptr && | while (aiTrav != nullptr && | ||||
(nMaxSolutions == 0 || vIP.size() < nMaxSolutions)) { | (nMaxSolutions == 0 || vIP.size() < nMaxSolutions)) { | ||||
CNetAddr resolved; | CNetAddr resolved; | ||||
if (aiTrav->ai_family == AF_INET) { | if (aiTrav->ai_family == AF_INET) { | ||||
assert(aiTrav->ai_addrlen >= sizeof(sockaddr_in)); | assert(aiTrav->ai_addrlen >= sizeof(sockaddr_in)); | ||||
resolved = | resolved = | ||||
CNetAddr(((struct sockaddr_in *)(aiTrav->ai_addr))->sin_addr); | CNetAddr(reinterpret_cast<struct sockaddr_in *>(aiTrav->ai_addr) | ||||
->sin_addr); | |||||
} | } | ||||
if (aiTrav->ai_family == AF_INET6) { | if (aiTrav->ai_family == AF_INET6) { | ||||
assert(aiTrav->ai_addrlen >= sizeof(sockaddr_in6)); | assert(aiTrav->ai_addrlen >= sizeof(sockaddr_in6)); | ||||
struct sockaddr_in6 *s6 = (struct sockaddr_in6 *)aiTrav->ai_addr; | struct sockaddr_in6 *s6 = | ||||
reinterpret_cast<struct sockaddr_in6 *>(aiTrav->ai_addr); | |||||
resolved = CNetAddr(s6->sin6_addr, s6->sin6_scope_id); | resolved = CNetAddr(s6->sin6_addr, s6->sin6_scope_id); | ||||
} | } | ||||
// Never allow resolving to an internal address. Consider any such | // Never allow resolving to an internal address. Consider any such | ||||
// result invalid. | // result invalid. | ||||
if (!resolved.IsInternal()) { | if (!resolved.IsInternal()) { | ||||
vIP.push_back(resolved); | vIP.push_back(resolved); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 635 Lines • Show Last 20 Lines |