[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

r4084 - glibc-package/trunk/debian/patches/any



Author: aurel32
Date: 2010-01-15 15:47:15 +0000 (Fri, 15 Jan 2010)
New Revision: 4084

Modified:
   glibc-package/trunk/debian/patches/any/cvs-resolv-bindv6only.diff
   glibc-package/trunk/debian/patches/any/local-no-SOCK_NONBLOCK.diff
Log:
Update to upstream patch


Modified: glibc-package/trunk/debian/patches/any/cvs-resolv-bindv6only.diff
===================================================================
--- glibc-package/trunk/debian/patches/any/cvs-resolv-bindv6only.diff	2010-01-15 14:23:07 UTC (rev 4083)
+++ glibc-package/trunk/debian/patches/any/cvs-resolv-bindv6only.diff	2010-01-15 15:47:15 UTC (rev 4084)
@@ -1,23 +1,40 @@
-2009-01-06  Aurelien Jarno <aurelien@aurel32.net>
+2010-01-14  Ulrich Drepper  <drepper@redhat.com>
+ 
+	[BZ #11141]
+	* resolv/res_send.c (reopen): Don't use IPv6 sockets for IPv4
+	addresses.
 
-        * resolv/res_send.c (reopen): Don't use IPv4-mapped addresses.
-	Create PF_INET sockets for IPv4 addresses and PF_INET6 sockets 
-	for IPv6 ones.
-
 diff --git a/resolv/res_send.c b/resolv/res_send.c
-index e2bbfcc..b2c9cf5 100644
+index e2bbfcc..28a47e4 100644
 --- a/resolv/res_send.c
 +++ b/resolv/res_send.c
-@@ -914,7 +914,7 @@ reopen (res_state statp, int *terrno, int ns)
- 		struct sockaddr_in6 *nsap = EXT(statp).nsaddrs[ns];
+@@ -199,10 +199,6 @@ static void		Perror(const res_state, FILE *, const char *, int);
+ #endif
+ static int		sock_eq(struct sockaddr_in6 *, struct sockaddr_in6 *);
  
+-/* Reachover. */
+-
+-static void convaddr4to6(struct sockaddr_in6 *sa);
+-
+ /* Public. */
+ 
+ /* int
+@@ -911,10 +907,12 @@ static int
+ reopen (res_state statp, int *terrno, int ns)
+ {
+ 	if (EXT(statp).nssocks[ns] == -1) {
+-		struct sockaddr_in6 *nsap = EXT(statp).nsaddrs[ns];
++		struct sockaddr *nsap
++		  = (struct sockaddr *) EXT(statp).nsaddrs[ns];
++		socklen_t slen;
+ 
  		/* only try IPv6 if IPv6 NS and if not failed before */
 -		if ((EXT(statp).nscount6 > 0) && !statp->ipv6_unavail) {
-+		if (nsap->sin6_family == AF_INET6 && !statp->ipv6_unavail) {
++		if (nsap->sa_family == AF_INET6 && !statp->ipv6_unavail) {
  			if (__builtin_expect (__have_o_nonblock >= 0, 1)) {
  				EXT(statp).nssocks[ns] =
  				  socket(PF_INET6, SOCK_DGRAM|SOCK_NONBLOCK,
-@@ -931,12 +931,7 @@ reopen (res_state statp, int *terrno, int ns)
+@@ -931,12 +929,8 @@ reopen (res_state statp, int *terrno, int ns)
  				  socket(PF_INET6, SOCK_DGRAM, 0);
  			if (EXT(statp).nssocks[ns] < 0)
  			    statp->ipv6_unavail = errno == EAFNOSUPPORT;
@@ -27,7 +44,52 @@
 -			    convaddr4to6(nsap);
 -		}
 -		if (EXT(statp).nssocks[ns] < 0) {
-+		} else if (nsap->sin6_family == AF_INET) {
++			slen = sizeof (struct sockaddr_in6);
++		} else if (nsap->sa_family == AF_INET) {
  			if (__builtin_expect (__have_o_nonblock >= 0, 1)) {
  				EXT(statp).nssocks[ns]
  				  = socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK,
+@@ -951,6 +945,7 @@ reopen (res_state statp, int *terrno, int ns)
+ 			if (__builtin_expect (__have_o_nonblock < 0, 0))
+ 				EXT(statp).nssocks[ns]
+ 				  = socket(PF_INET, SOCK_DGRAM, 0);
++			slen = sizeof (struct sockaddr_in);
+ 		}
+ 		if (EXT(statp).nssocks[ns] < 0) {
+ 			*terrno = errno;
+@@ -969,10 +964,8 @@ reopen (res_state statp, int *terrno, int ns)
+ 		 * error message is received.  We can thus detect
+ 		 * the absence of a nameserver without timing out.
+ 		 */
+-		if (connect(EXT(statp).nssocks[ns], (struct sockaddr *)nsap,
+-			    sizeof *nsap) < 0) {
+-			Aerror(statp, stderr, "connect(dg)", errno,
+-			       (struct sockaddr *) nsap);
++		if (connect(EXT(statp).nssocks[ns], nsap, slen) < 0) {
++			Aerror(statp, stderr, "connect(dg)", errno, nsap);
+ 			__res_iclose(statp, false);
+ 			return (0);
+ 		}
+@@ -1415,22 +1408,3 @@ sock_eq(struct sockaddr_in6 *a1, struct sockaddr_in6 *a2) {
+ 		(a1->sin6_addr.s6_addr32[3] ==
+ 		 ((struct sockaddr_in *)a2)->sin_addr.s_addr));
+ }
+-
+-/*
+- * Converts IPv4 family, address and port to
+- * IPv6 family, IPv4-mapped IPv6 address and port.
+- */
+-static void
+-convaddr4to6(struct sockaddr_in6 *sa)
+-{
+-    struct sockaddr_in *sa4p = (struct sockaddr_in *) sa;
+-    in_port_t port = sa4p->sin_port;
+-    in_addr_t addr = sa4p->sin_addr.s_addr;
+-
+-    sa->sin6_family = AF_INET6;
+-    sa->sin6_port = port;
+-    sa->sin6_addr.s6_addr32[0] = 0;
+-    sa->sin6_addr.s6_addr32[1] = 0;
+-    sa->sin6_addr.s6_addr32[2] = htonl(0xFFFF);
+-    sa->sin6_addr.s6_addr32[3] = addr;
+-}

Modified: glibc-package/trunk/debian/patches/any/local-no-SOCK_NONBLOCK.diff
===================================================================
--- glibc-package/trunk/debian/patches/any/local-no-SOCK_NONBLOCK.diff	2010-01-15 14:23:07 UTC (rev 4083)
+++ glibc-package/trunk/debian/patches/any/local-no-SOCK_NONBLOCK.diff	2010-01-15 15:47:15 UTC (rev 4084)
@@ -16,15 +16,15 @@
  
  /* From ev_streams.c.  */
  
-@@ -915,6 +915,7 @@
+@@ -913,6 +913,7 @@
  
  		/* only try IPv6 if IPv6 NS and if not failed before */
- 		if (nsap->sin6_family == AF_INET6 && !statp->ipv6_unavail) {
+ 		if (nsap->sa_family == AF_INET6 && !statp->ipv6_unavail) {
 +#ifdef SOCK_NONBLOCK
  			if (__builtin_expect (__have_o_nonblock >= 0, 1)) {
  				EXT(statp).nssocks[ns] =
  				  socket(PF_INET6, SOCK_DGRAM|SOCK_NONBLOCK,
-@@ -927,11 +928,13 @@
+@@ -925,12 +926,14 @@
  #endif
  			}
  			if (__builtin_expect (__have_o_nonblock < 0, 0))
@@ -33,20 +33,21 @@
  				  socket(PF_INET6, SOCK_DGRAM, 0);
  			if (EXT(statp).nssocks[ns] < 0)
  			    statp->ipv6_unavail = errno == EAFNOSUPPORT;
- 		} else if (nsap->sin6_family == AF_INET) {
+ 			slen = sizeof (struct sockaddr_in6);
+ 		} else if (nsap->sa_family == AF_INET) {
 +#ifdef SOCK_NONBLOCK
  			if (__builtin_expect (__have_o_nonblock >= 0, 1)) {
  				EXT(statp).nssocks[ns]
  				  = socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK,
-@@ -944,6 +947,7 @@
+@@ -943,6 +946,7 @@
  #endif
  			}
  			if (__builtin_expect (__have_o_nonblock < 0, 0))
 +#endif
  				EXT(statp).nssocks[ns]
  				  = socket(PF_INET, SOCK_DGRAM, 0);
- 		}
-@@ -971,7 +975,11 @@
+ 			slen = sizeof (struct sockaddr_in);
+@@ -969,7 +973,11 @@
  			__res_iclose(statp, false);
  			return (0);
  		}


Reply to: