Use sockaddr_union in parseAsyncDNSServers().

pull/2/head
Tatsuhiro Tsujikawa 2011-10-19 23:29:23 +09:00
parent 138130497f
commit c01c34f24a
1 changed files with 4 additions and 4 deletions

View File

@ -120,12 +120,12 @@ ares_addr_node* parseAsyncDNSServers(const std::string& serversOpt)
node->next = 0;
node->family = res->ai_family;
if(node->family == AF_INET) {
struct sockaddr_in* in =
reinterpret_cast<struct sockaddr_in*>(res->ai_addr);
sockaddr_in* in =
&reinterpret_cast<sockaddr_union*>(res->ai_addr)->in;
memcpy(&node->addr.addr4, &(in->sin_addr), 4);
} else {
struct sockaddr_in6* in =
reinterpret_cast<struct sockaddr_in6*>(res->ai_addr);
sockaddr_in6* in =
&reinterpret_cast<sockaddr_union*>(res->ai_addr)->in6;
memcpy(&node->addr.addr6, &(in->sin6_addr), 16);
}
tail->next = node;