aboutsummaryrefslogtreecommitdiff
path: root/ares
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2006-09-11 20:25:13 +0000
committerDaniel Stenberg <daniel@haxx.se>2006-09-11 20:25:13 +0000
commit00ae13f96630dc5c2a9add25a4337710f8fcdaf5 (patch)
treeb89fe4a26ab389e5e7b90ba537916a4a0530152d /ares
parent29dc39fce1126265d8526be15beec3e3fdc1c11d (diff)
- 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.
Diffstat (limited to 'ares')
-rw-r--r--ares/CHANGES10
-rw-r--r--ares/ares_init.c3
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);