diff options
-rw-r--r-- | ares/CHANGES | 10 | ||||
-rw-r--r-- | ares/ares_init.c | 3 |
2 files changed, 12 insertions, 1 deletions
diff --git a/ares/CHANGES b/ares/CHANGES index 0a927c284..2e0393b18 100644 --- a/ares/CHANGES +++ b/ares/CHANGES @@ -1,5 +1,15 @@ Changelog for the c-ares project +* September 11 2006 + +- Guilherme Balena Versiani: I noted a strange BUG in Win32 port + (ares_init.c/get_iphlpapi_dns_info() function): when I disable the network + by hand or disconnect the network cable in Windows 2000 or Windows XP, my + application gets 127.0.0.1 as the only name server. The problem comes from + 'GetNetworkParams' function, that returns the empty string "" as the only + name server in that case. Moreover, the Windows implementation of + inet_addr() returns INADDR_LOOPBACK instead of INADDR_NONE. + * August 29 2006 - Brad Spencer did diff --git a/ares/ares_init.c b/ares/ares_init.c index 6c9e412b0..a0c18653b 100644 --- a/ares/ares_init.c +++ b/ares/ares_init.c @@ -373,7 +373,8 @@ static int get_iphlpapi_dns_info (char *ret_buf, size_t ret_size) printf ("DNS Servers:\n" " %s (primary)\n", fi->DnsServerList.IpAddress.String); } - if (inet_addr(fi->DnsServerList.IpAddress.String) != INADDR_NONE && + if (strlen(fi->DnsServerList.IpAddress.String) > 0 && + inet_addr(fi->DnsServerList.IpAddress.String) != INADDR_NONE && left > ip_size) { ret += sprintf (ret, "%s,", fi->DnsServerList.IpAddress.String); |