r6673 - in glibc-package/branches/glibc-2.21/debian: . patches/kfreebsd
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 to: