diff options
author | Waldemar Brodkorb <wbx@uclibc-ng.org> | 2015-12-22 10:47:56 +0100 |
---|---|---|
committer | Waldemar Brodkorb <wbx@uclibc-ng.org> | 2015-12-22 10:47:56 +0100 |
commit | 6b4bcce3cbb89442f96e2e47a507b5983f27a191 (patch) | |
tree | 2be29a17ee6854fcbb45586d3605a3fd78ac8bea /libc/sysdeps/linux/common/execve.c | |
parent | 6994bbf289dc098d38b27521da3a7431e17736db (diff) |
resolv: fix gethostbyname2_r to match gethostbyname_r, fixing bugs with AAAA lookups
The latter half of gethostbyname2_r (doing AAAA queries) is rather dramatically different
from the corresponding portion of gethostbyname_r (doing A queries). This leads to problems
like calls to getaddrinfo only returning one IPv6 address, even when multiple exist.
Seems to be entirely a case of divergent evolution -- a half-decade of fixes for the IPv4
code but no love for IPv6. Until now. ;)
DNS behaviour for IPv6 is really no different than for IPv4 -- beyond the difference in
address sizes, there's no need for the functions to be so different.
Consequently, this patch really is almost just a cut-and-paste of gethostbyname_r, with
the appropriate substitutions of in6_addr, AF_INET6, etc; while holding on to the few
extra bits that actually belong in there (eg #ifdef __UCLIBC_HAS_IPV6__).
Signed-off-by: Wes Campaigne <westacular@gmail.com>
Diffstat (limited to 'libc/sysdeps/linux/common/execve.c')
0 files changed, 0 insertions, 0 deletions