Browse Source

Fix ipv4/ipv6 resolving. 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
Felix Fietkau 19 years ago
parent
commit
eeb61522b5
1 changed files with 12 additions and 0 deletions
  1. 12 0
      toolchain/uClibc/patches/200-ipv6_hosts_resolve.patch

+ 12 - 0
toolchain/uClibc/patches/200-ipv6_hosts_resolve.patch

@@ -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) {