might have an IPv4 address in `ai' rather than in `addresses'.
Thanks to Martin Prikryl for pointing this out.
git-svn-id: svn://svn.tartarus.org/sgt/putty@5587
cda61777-01e9-0310-a592-
d414129be87e
} else
#endif
if (addr->family == AF_INET) {
- struct in_addr a;
- assert(addr->addresses && addr->curraddr < addr->naddresses);
- a.s_addr = p_htonl(addr->addresses[addr->curraddr]);
- return ipv4_is_local_addr(a);
+#ifndef NO_IPV6
+ if (addr->ai) {
+ return ipv4_is_local_addr(((struct sockaddr_in *)addr->ai->ai_addr)
+ ->sin_addr);
+ } else
+#endif
+ {
+ struct in_addr a;
+ assert(addr->addresses && addr->curraddr < addr->naddresses);
+ a.s_addr = p_htonl(addr->addresses[addr->curraddr]);
+ return ipv4_is_local_addr(a);
+ }
} else {
assert(addr->family == AF_UNSPEC);
return 0; /* we don't know; assume not */