@@ -85,11 +85,12 @@ struct addrinfo_sort_elem
8585#define ARES_IN6_IS_ADDR_6BONE (a ) \
8686 (((a)->s6_addr[0] == 0x3f) && ((a)->s6_addr[1] == 0xfe))
8787
88+
8889static int get_scope (const struct sockaddr * addr )
8990{
9091 if (addr -> sa_family == AF_INET6 )
9192 {
92- const struct sockaddr_in6 * addr6 = (const struct sockaddr_in6 * ) addr ;
93+ const struct sockaddr_in6 * addr6 = CARES_INADDR_CAST (const struct sockaddr_in6 * , addr ) ;
9394 if (IN6_IS_ADDR_MULTICAST (& addr6 -> sin6_addr ))
9495 {
9596 return ARES_IPV6_ADDR_MC_SCOPE (& addr6 -> sin6_addr );
@@ -114,7 +115,7 @@ static int get_scope(const struct sockaddr *addr)
114115 }
115116 else if (addr -> sa_family == AF_INET )
116117 {
117- const struct sockaddr_in * addr4 = (const struct sockaddr_in * ) addr ;
118+ const struct sockaddr_in * addr4 = CARES_INADDR_CAST (const struct sockaddr_in * , addr ) ;
118119 unsigned long int na = ntohl (addr4 -> sin_addr .s_addr );
119120 if (ARES_IN_LOOPBACK (na ) || /* 127.0.0.0/8 */
120121 (na & 0xffff0000 ) == 0xa9fe0000 ) /* 169.254.0.0/16 */
@@ -149,7 +150,7 @@ static int get_label(const struct sockaddr *addr)
149150 }
150151 else if (addr -> sa_family == AF_INET6 )
151152 {
152- const struct sockaddr_in6 * addr6 = (const struct sockaddr_in6 * ) addr ;
153+ const struct sockaddr_in6 * addr6 = CARES_INADDR_CAST (const struct sockaddr_in6 * , addr ) ;
153154 if (IN6_IS_ADDR_LOOPBACK (& addr6 -> sin6_addr ))
154155 {
155156 return 0 ;
@@ -210,7 +211,7 @@ static int get_precedence(const struct sockaddr *addr)
210211 }
211212 else if (addr -> sa_family == AF_INET6 )
212213 {
213- const struct sockaddr_in6 * addr6 = (const struct sockaddr_in6 * ) addr ;
214+ const struct sockaddr_in6 * addr6 = CARES_INADDR_CAST (const struct sockaddr_in6 * , addr ) ;
214215 if (IN6_IS_ADDR_LOOPBACK (& addr6 -> sin6_addr ))
215216 {
216217 return 50 ;
@@ -353,10 +354,10 @@ static int rfc6724_compare(const void *ptr1, const void *ptr2)
353354 {
354355 const struct sockaddr_in6 * a1_src = & a1 -> src_addr .sa6 ;
355356 const struct sockaddr_in6 * a1_dst =
356- (const struct sockaddr_in6 * ) a1 -> ai -> ai_addr ;
357+ CARES_INADDR_CAST (const struct sockaddr_in6 * , a1 -> ai -> ai_addr ) ;
357358 const struct sockaddr_in6 * a2_src = & a2 -> src_addr .sa6 ;
358359 const struct sockaddr_in6 * a2_dst =
359- (const struct sockaddr_in6 * ) a2 -> ai -> ai_addr ;
360+ CARES_INADDR_CAST (const struct sockaddr_in6 * , a2 -> ai -> ai_addr ) ;
360361 prefixlen1 = common_prefix_len (& a1_src -> sin6_addr , & a1_dst -> sin6_addr );
361362 prefixlen2 = common_prefix_len (& a2_src -> sin6_addr , & a2_dst -> sin6_addr );
362363 if (prefixlen1 != prefixlen2 )
@@ -384,7 +385,7 @@ static int find_src_addr(ares_channel channel,
384385 const struct sockaddr * addr ,
385386 struct sockaddr * src_addr )
386387{
387- int sock ;
388+ ares_socket_t sock ;
388389 int ret ;
389390 ares_socklen_t len ;
390391
@@ -402,7 +403,7 @@ static int find_src_addr(ares_channel channel,
402403 }
403404
404405 sock = ares__open_socket (channel , addr -> sa_family , SOCK_DGRAM , IPPROTO_UDP );
405- if (sock == -1 )
406+ if (sock == ARES_SOCKET_BAD )
406407 {
407408 if (errno == EAFNOSUPPORT )
408409 {
@@ -426,7 +427,7 @@ static int find_src_addr(ares_channel channel,
426427 return 0 ;
427428 }
428429
429- if (getsockname (sock , src_addr , & len ) == -1 )
430+ if (getsockname (sock , src_addr , & len ) != 0 )
430431 {
431432 ares__close_socket (channel , sock );
432433 return -1 ;
@@ -491,4 +492,4 @@ int ares__sortaddrinfo(ares_channel channel, struct ares_addrinfo_node *list_sen
491492
492493 ares_free (elems );
493494 return ARES_SUCCESS ;
494- }
495+ }
0 commit comments