diff options
author | Siddhesh Poyarekar <siddhesh@redhat.com> | 2014-05-15 12:33:11 +0530 |
---|---|---|
committer | Siddhesh Poyarekar <siddhesh@redhat.com> | 2014-05-15 12:33:11 +0530 |
commit | cf26a0cb6a0bbaca46a01ddad6662e5e5159a32a (patch) | |
tree | e35a017c56bf53210467f323f037436b3cc9f5ab | |
parent | a5d87b3db4f40a0f07e41f1986ac7f330743a0e7 (diff) | |
download | glibc-cf26a0cb6a0bbaca46a01ddad6662e5e5159a32a.tar glibc-cf26a0cb6a0bbaca46a01ddad6662e5e5159a32a.tar.gz glibc-cf26a0cb6a0bbaca46a01ddad6662e5e5159a32a.tar.bz2 glibc-cf26a0cb6a0bbaca46a01ddad6662e5e5159a32a.zip |
Return EAI_AGAIN for AF_UNSPEC when herrno is TRY_AGAIN (BZ #16849)
getaddrinfo correctly returns EAI_AGAIN for AF_INET and AF_INET6
queries. For AF_UNSPEC however, an older change
(a682a1bf553b1efe4dbb03207fece5b719cec482) broke the check and due to
that the returned error was EAI_NONAME.
This patch fixes the check so that a non-authoritative not-found is
returned as EAI_AGAIN to the user instead of EAI_NONAME.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | sysdeps/posix/getaddrinfo.c | 3 |
3 files changed, 9 insertions, 4 deletions
@@ -1,3 +1,9 @@ +2014-05-15 Siddhesh Poyarekar <siddhesh@redhat.com> + + [BZ #16849] + * sysdeps/posix/getaddrinfo.c (gaih_inet): Only check for + herrno to return EAI_AGAIN. + 2014-05-14 Roland McGrath <roland@hack.frob.com> * sysdeps/unix/sysv/linux/i386/nptl/c++-types.data: Moved ... @@ -16,8 +16,8 @@ Version 2.20 16670, 16674, 16677, 16680, 16683, 16689, 16695, 16701, 16706, 16707, 16712, 16713, 16714, 16731, 16739, 16740, 16743, 16754, 16758, 16759, 16760, 16770, 16786, 16789, 16791, 16799, 16800, 16815, 16823, 16824, - 16831, 16838, 16854, 16876, 16877, 16885, 16888, 16890, 16912, 16916, - 16922, 16927, 16928, 16932. + 16831, 16838, 16849, 16854, 16876, 16877, 16885, 16888, 16890, 16912, + 16916, 16922, 16927, 16928, 16932. * The minimum Linux kernel version that this version of the GNU C Library can be used with is 2.6.32. diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c index 6258330759..8f392b9678 100644 --- a/sysdeps/posix/getaddrinfo.c +++ b/sysdeps/posix/getaddrinfo.c @@ -867,8 +867,7 @@ gaih_inet (const char *name, const struct gaih_service *service, if (status != NSS_STATUS_TRYAGAIN || rc != ERANGE || herrno != NETDB_INTERNAL) { - if (status == NSS_STATUS_TRYAGAIN - && herrno == TRY_AGAIN) + if (herrno == TRY_AGAIN) no_data = EAI_AGAIN; else no_data = herrno == NO_DATA; |