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
(a682a1bf55) 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.
This commit is contained in:
Siddhesh Poyarekar 2014-05-15 12:33:11 +05:30
parent a5d87b3db4
commit cf26a0cb6a
3 changed files with 9 additions and 4 deletions

View File

@ -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 ...

4
NEWS
View File

@ -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.

View File

@ -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;