about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@redhat.com>2014-05-15 12:33:11 +0530
committerSiddhesh Poyarekar <siddhesh@redhat.com>2014-05-15 12:33:11 +0530
commitcf26a0cb6a0bbaca46a01ddad6662e5e5159a32a (patch)
treee35a017c56bf53210467f323f037436b3cc9f5ab
parenta5d87b3db4f40a0f07e41f1986ac7f330743a0e7 (diff)
downloadglibc-cf26a0cb6a0bbaca46a01ddad6662e5e5159a32a.tar.gz
glibc-cf26a0cb6a0bbaca46a01ddad6662e5e5159a32a.tar.xz
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--ChangeLog6
-rw-r--r--NEWS4
-rw-r--r--sysdeps/posix/getaddrinfo.c3
3 files changed, 9 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index fc822fe9a1..079e1ed0ac 100644
--- 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 be88031c1e..38d7214be2 100644
--- 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.
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;