about summary refs log tree commit diff
path: root/resolv/res_init.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2007-06-18 22:22:57 +0000
committerUlrich Drepper <drepper@redhat.com>2007-06-18 22:22:57 +0000
commitae1ad3aebbc397212b4bb2eec92ff19f8c1f913a (patch)
treeb1ec4a328c2f5065d05e19ca024ed9be58dcf28c /resolv/res_init.c
parent3abee0b7f15aadf44f442ccdea30f0bdbe113293 (diff)
downloadglibc-ae1ad3aebbc397212b4bb2eec92ff19f8c1f913a.tar.gz
glibc-ae1ad3aebbc397212b4bb2eec92ff19f8c1f913a.tar.xz
glibc-ae1ad3aebbc397212b4bb2eec92ff19f8c1f913a.zip
[BZ #4647]
            Tomas Janousek  <tjanouse@redhat.com>
            Ulrich Drepper  <drepper@redhat.com>

	[BZ #4647]
	* resolv/res_send.c (send_dg): Remove socket_pf.  Use ipv6_unavail
	member in __res_state, only convaddr4to6 if nssocks[ns] is a PF_INET6
	socket.
	* resolv/resolv.h (__res_state): Add ipv6_unavail member.  Make
	unused member a bitmap.
	* resolv/res_init.c (__res_vinit): Reset ipv6_unavail if IPv6
	servers are configured.

2007-06-18  Jakub Jelinek  <jakub@redhat.com>
Diffstat (limited to 'resolv/res_init.c')
-rw-r--r--resolv/res_init.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/resolv/res_init.c b/resolv/res_init.c
index 640e087920..d1a5681a93 100644
--- a/resolv/res_init.c
+++ b/resolv/res_init.c
@@ -241,8 +241,8 @@ __res_vinit(res_state statp, int preinit) {
 	 line[sizeof(name) - 1] == '\t'))
 
 	if ((fp = fopen(_PATH_RESCONF, "rc")) != NULL) {
-		/* No threads use this stream.  */
-		__fsetlocking (fp, FSETLOCKING_BYCALLER);
+	    /* No threads use this stream.  */
+	    __fsetlocking (fp, FSETLOCKING_BYCALLER);
 	    /* read the config file */
 	    while (fgets_unlocked(buf, sizeof(buf), fp) != NULL) {
 		/* skip comments */
@@ -397,8 +397,11 @@ __res_vinit(res_state statp, int preinit) {
 	    if (nserv > 1)
 		statp->nscount = nserv;
 #ifdef _LIBC
-	    if (nservall - nserv > 0)
+	    if (nservall - nserv > 0) {
 		statp->_u._ext.nscount6 = nservall - nserv;
+		/* We try IPv6 servers again.  */
+		statp->ipv6_unavail = false;
+	    }
 #endif
 #ifdef RESOLVSORT
 	    statp->nsort = nsort;