]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Return EAI_AGAIN for AF_UNSPEC when herrno is TRY_AGAIN (BZ #16849)
authorSiddhesh Poyarekar <siddhesh@redhat.com>
Thu, 15 May 2014 07:03:11 +0000 (12:33 +0530)
committerSiddhesh Poyarekar <siddhesh@redhat.com>
Thu, 15 May 2014 07:03:11 +0000 (12:33 +0530)
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.

ChangeLog
NEWS
sysdeps/posix/getaddrinfo.c

index fc822fe9a1f09b298cf464f218d5dff192def8bc..079e1ed0ac8fc8c8f67139633fdfe2dd9c03320d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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 ...
diff --git a/NEWS b/NEWS
index be88031c1ee9c540e969d8430e500430a48b2556..38d7214be24a41e932aa09d185816c301995977d 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -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.
index 6258330759af529f569356dfa4f3fd3cc024c4ef..8f392b9678c1da2947196af2bd21964c6b4fdafe 100644 (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;