Fix ipv4/ipv6 resolving.
authorFelix Fietkau <nbd@openwrt.org>
Sat, 27 Jan 2007 15:13:06 +0000 (15:13 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Sat, 27 Jan 2007 15:13:06 +0000 (15:13 +0000)
When not using AF_INET, gethostbyname2_r tries to resolve an ipv6 address
from /etc/hosts using __get_hosts_byname_r, but with AF_INET instead of the
supplied address family. This returns ipv4 addresses marked as ipv6 ones.

SVN-Revision: 6217

toolchain/uClibc/patches/200-ipv6_hosts_resolve.patch [new file with mode: 0644]

diff --git a/toolchain/uClibc/patches/200-ipv6_hosts_resolve.patch b/toolchain/uClibc/patches/200-ipv6_hosts_resolve.patch
new file mode 100644 (file)
index 0000000..38f6d3e
--- /dev/null
@@ -0,0 +1,12 @@
+diff -pur uClibc.old/libc/inet/resolv.c uClibc.dev/libc/inet/resolv.c
+--- uClibc.old/libc/inet/resolv.c      2005-08-18 00:49:41.000000000 +0200
++++ uClibc.dev/libc/inet/resolv.c      2007-01-27 15:33:39.689171960 +0100
+@@ -2083,7 +2083,7 @@ int gethostbyname2_r(const char *name, i
+               int old_errno = errno;  /* Save the old errno and reset errno */
+               __set_errno(0);                 /* to check for missing /etc/hosts. */
+-              if ((i=__get_hosts_byname_r(name, AF_INET, result_buf,
++              if ((i=__get_hosts_byname_r(name, family, result_buf,
+                               buf, buflen, result, h_errnop))==0)
+                       return i;
+               switch (*h_errnop) {