Author: aurel32
Date: 2015-10-25 22:16:24 +0000 (Sun, 25 Oct 2015)
New Revision: 6673

Modified:
   glibc-package/branches/glibc-2.21/debian/changelog
   
glibc-package/branches/glibc-2.21/debian/patches/kfreebsd/local-getaddrinfo-freebsd-kernel.diff
Log:
patches/kfreebsd/local-getaddrinfo-freebsd-kernel.diff: improve and remove
a warning.

Modified: glibc-package/branches/glibc-2.21/debian/changelog
===================================================================
--- glibc-package/branches/glibc-2.21/debian/changelog  2015-10-25 22:15:47 UTC 
(rev 6672)
+++ glibc-package/branches/glibc-2.21/debian/changelog  2015-10-25 22:16:24 UTC 
(rev 6673)
@@ -19,6 +19,8 @@
     - Define SOCK_CLOEXEC and SOCK_NONBLOCK.
     - Wire-up accept4.  Closes: #722885.
   * patches/kfreebsd/local-nscd-no-sockcloexec.diff: Drop.
+  * patches/kfreebsd/local-getaddrinfo-freebsd-kernel.diff: improve and remove
+    a warning.
   * patches/any/cvs-rfc3542-advanced-api.diff: new patch from usptream to
     add missing Advanced API (RFC3542) (1) defines.  Closes: #753909.
   * debian/rules: don't put debug files from libc0.1-i386 and libc6-mips32

Modified: 
glibc-package/branches/glibc-2.21/debian/patches/kfreebsd/local-getaddrinfo-freebsd-kernel.diff
===================================================================
--- 
glibc-package/branches/glibc-2.21/debian/patches/kfreebsd/local-getaddrinfo-freebsd-kernel.diff
     2015-10-25 22:15:47 UTC (rev 6672)
+++ 
glibc-package/branches/glibc-2.21/debian/patches/kfreebsd/local-getaddrinfo-freebsd-kernel.diff
     2015-10-25 22:16:24 UTC (rev 6673)
@@ -1,20 +1,21 @@
 --- a/sysdeps/posix/getaddrinfo.c
 +++ b/sysdeps/posix/getaddrinfo.c
-@@ -2267,8 +2267,20 @@
+@@ -2522,8 +2522,21 @@
                }
  
              socklen_t sl = sizeof (results[i].source_addr);
++            const struct sockaddr *sa = q->ai_addr;
 +#ifdef __FreeBSD_kernel__
 +            struct sockaddr_in6 sa_in6;
-+            const struct sockaddr *sa = &sa_in6; 
-+            memcpy(&sa_in6, q->ai_addr, q->ai_family == AF_INET6 ?
-+                   sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in));
 +            /* The FreeBSD kernel doesn't allow connections on port 0. Use
 +               port 1 instead, as on the FreeBSD libc. */
-+            if (sa_in6.sin6_port == htons(0))
-+              sa_in6.sin6_port = htons(1);
-+#else
-+            const struct sockaddr *sa = q->ai_addr;
++            if (((struct sockaddr_in *)sa)->sin_port == htons(0))
++              {
++                sa = (struct sockaddr *)&sa_in6;
++                memcpy(&sa_in6, q->ai_addr, q->ai_family == AF_INET6 ?
++                     sizeof(struct sockaddr_in6) : sizeof(struct 
sockaddr_in));
++                sa_in6.sin6_port = htons(1);
++              }
 +#endif
              if (fd != -1
 -                && __connect (fd, q->ai_addr, q->ai_addrlen) == 0

Reply via email to