This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch, master, updated. glibc-2.13-257-g4769ae7


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  4769ae77fc6c8dacea6476addb015c8797848cdd (commit)
      from  4462fad3d9db8c5d5c842b059edefa0019a5e045 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=4769ae77fc6c8dacea6476addb015c8797848cdd

commit 4769ae77fc6c8dacea6476addb015c8797848cdd
Author: Ulrich Drepper <drepper@gmail.com>
Date:   Mon May 30 22:48:47 2011 -0400

    Handle DNS server failures in case of AF_UNSPEC lookups correctly

diff --git a/ChangeLog b/ChangeLog
index 31719ab..dd4ad9e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2011-05-30  Ulrich Drepper  <drepper@gmail.com>
 
+	[BZ #12684]
+	* resolv/res_send.c (__libc_res_nsend): Only go to the next name server
+	if both request failed.
+	(send_dg): In case of server errors clear resplen or *resplen2.
+
 	[BZ #12454]
 	* elf/dl-deps.c (_dl_map_object_deps): Run initializer sorting only
 	when there are multiple maps.
diff --git a/NEWS b/NEWS
index b3d8005..1ca9673 100644
--- a/NEWS
+++ b/NEWS
@@ -16,9 +16,9 @@ Version 2.14
   12393, 12420, 12432, 12445, 12449, 12453, 12454, 12460, 12469, 12489,
   12509, 12510, 12511, 12518, 12527, 12541, 12545, 12551, 12582, 12583,
   12587, 12597, 12601, 12611, 12625, 12626, 12631, 12650, 12653, 12655,
-  12660, 12671, 12681, 12685, 12711, 12713, 12714, 12717, 12723, 12724,
-  12734, 12738, 12746, 12766, 12775, 12777, 12782, 12788, 12792, 12795,
-  12811, 12813, 12814
+  12660, 12671, 12681, 12684, 12685, 12711, 12713, 12714, 12717, 12723,
+  12724, 12734, 12738, 12746, 12766, 12775, 12777, 12782, 12788, 12792,
+  12795, 12811, 12813, 12814
 
 * The RPC implementation in libc is obsoleted.  Old programs keep working
   but new programs cannot be linked with the routines in libc anymore.
diff --git a/resolv/res_send.c b/resolv/res_send.c
index 845b658..97142b7 100644
--- a/resolv/res_send.c
+++ b/resolv/res_send.c
@@ -549,7 +549,7 @@ __libc_res_nsend(res_state statp, const u_char *buf, int buflen,
 				    ns, ansp, ansp2, nansp2, resplen2);
 			if (n < 0)
 				return (-1);
-			if (n == 0)
+			if (n == 0 && (buf2 == NULL || resplen2 == 0))
 				goto next_ns;
 		} else {
 			/* Use datagrams. */
@@ -559,7 +559,7 @@ __libc_res_nsend(res_state statp, const u_char *buf, int buflen,
 				    ansp2, nansp2, resplen2);
 			if (n < 0)
 				return (-1);
-			if (n == 0)
+			if (n == 0 && (buf2 == NULL || resplen2 == 0))
 				goto next_ns;
 			if (v_circuit)
 			  // XXX Check whether both requests failed or
@@ -1275,10 +1275,14 @@ send_dg(res_state statp,
 				(*thisresplenp > *thisanssizp)
 				? *thisanssizp : *thisresplenp);
 
-			if (recvresp1 || (buf2 != NULL && recvresp2))
+			if (recvresp1 || (buf2 != NULL && recvresp2)) {
+			  *resplen2 = 0;
 			  return resplen;
+			}
 			if (buf2 != NULL)
 			  {
+			    /* No data from the first reply.  */
+			    resplen = 0;
 			    /* We are waiting for a possible second reply.  */
 			    if (hp->id == anhp->id)
 			      recvresp1 = 1;
@@ -1344,7 +1348,7 @@ send_dg(res_state statp,
 		goto err_out;
 	}
 	else {
-	  	/* poll should not have returned > 0 in this case.  */
+		/* poll should not have returned > 0 in this case.  */
 		abort ();
 	}
 }

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog         |    5 +++++
 NEWS              |    6 +++---
 resolv/res_send.c |   12 ++++++++----
 3 files changed, 16 insertions(+), 7 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]