GNU C Library master sources branch, master, updated. glibc-2.12-260-gbc425b3

drepper@sourceware.org drepper@sourceware.org
Sat Jan 15 16:11:00 GMT 2011


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  bc425b339b067bebe3d49907e63b0e81eb261bd2 (commit)
      from  70181fddf1467996bea393d13294ffe76b8a0853 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=bc425b339b067bebe3d49907e63b0e81eb261bd2

commit bc425b339b067bebe3d49907e63b0e81eb261bd2
Author: Ulrich Drepper <drepper@gmail.com>
Date:   Sat Jan 15 11:10:11 2011 -0500

    Signal temporary host lookup errors in nscd as such to the requester.

diff --git a/ChangeLog b/ChangeLog
index 08c3535..b55aaac 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2011-01-15  Ulrich Drepper  <drepper@gmail.com>
+
+	[BZ #6812]
+	* nscd/hstcache.c (tryagain): Define.
+	(cache_addhst): Return tryagain not notfound for temporary errors.
+	(addhstbyX): Also set h_errno to TRY_AGAIN when memory allocation
+	failed.
+
 2011-01-14  Ulrich Drepper  <drepper@gmail.com>
 
 	[BZ #10563]
diff --git a/NEWS b/NEWS
index 01984f6..7444b9d 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
-GNU C Library NEWS -- history of user-visible changes.  2011-1-14
+GNU C Library NEWS -- history of user-visible changes.  2011-1-15
 Copyright (C) 1992-2009, 2010, 2011 Free Software Foundation, Inc.
 See the end for copying conditions.
 
@@ -9,11 +9,11 @@ Version 2.13
 
 * The following bugs are resolved with this release:
 
-  3268, 7066, 10085, 10484, 10563, 10851, 11149, 11155, 11611, 11640, 11655,
-  11701, 11840, 11856, 11883, 11903, 11904, 11968, 11979, 12005, 12037,
-  12067, 12077, 12078, 12092, 12093, 12107, 12108, 12113, 12140, 12159,
-  12167, 12191, 12194, 12201, 12204, 12205, 12207, 12348, 12378, 12394,
-  12397
+  3268, 6812, 7066, 10085, 10484, 10563, 10851, 11149, 11155, 11611, 11640,
+  11655, 11701, 11840, 11856, 11883, 11903, 11904, 11968, 11979, 12005,
+  12037, 12067, 12077, 12078, 12092, 12093, 12107, 12108, 12113, 12140,
+  12159, 12167, 12191, 12194, 12201, 12204, 12205, 12207, 12348, 12378,
+  12394, 12397
 
 * New Linux interfaces: prlimit, prlimit64, fanotify_init, fanotify_mark
 
diff --git a/nscd/hstcache.c b/nscd/hstcache.c
index 228f6fd..a6055cf 100644
--- a/nscd/hstcache.c
+++ b/nscd/hstcache.c
@@ -1,5 +1,5 @@
 /* Cache handling for host lookup.
-   Copyright (C) 1998-2008, 2009 Free Software Foundation, Inc.
+   Copyright (C) 1998-2008, 2009, 2011 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -77,6 +77,20 @@ static const hst_response_header notfound =
 };
 
 
+/* This is the standard reply in case there are temporary problems.  */
+static const hst_response_header tryagain =
+{
+  .version = NSCD_VERSION,
+  .found = 0,
+  .h_name_len = 0,
+  .h_aliases_cnt = 0,
+  .h_addrtype = -1,
+  .h_length = -1,
+  .h_addr_list_cnt = 0,
+  .error = TRY_AGAIN
+};
+
+
 static void
 cache_addhst (struct database_dyn *db, int fd, request_header *req,
 	      const void *key, struct hostent *hst, uid_t owner,
@@ -111,11 +125,15 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
       else
 	{
 	  /* We have no data.  This means we send the standard reply for this
-	     case.  */
+	     case.  Possibly this is only temporary.  */
 	  ssize_t total = sizeof (notfound);
+	  assert (sizeof (notfound) == sizeof (tryagain));
+
+	  const hst_response_header *resp = (errval == EAGAIN
+					     ? &tryagain : &notfound);
 
 	  if (fd != -1 &&
-	      TEMP_FAILURE_RETRY (send (fd, &notfound, total,
+	      TEMP_FAILURE_RETRY (send (fd, resp, total,
 					MSG_NOSIGNAL)) != total)
 	    all_written = false;
 
@@ -135,7 +153,7 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
 					   ? db->negtimeout : ttl);
 
 	      /* This is the reply.  */
-	      memcpy (&dataset->resp, &notfound, total);
+	      memcpy (&dataset->resp, resp, total);
 
 	      /* Copy the key data.  */
 	      memcpy (dataset->strdata, key, req->key_len);
@@ -490,6 +508,7 @@ addhstbyX (struct database_dyn *db, int fd, request_header *req,
 	      /* We set the error to indicate this is (possibly) a
 		 temporary error and that it does not mean the entry
 		 is not available at all.  */
+	      h_errno = TRY_AGAIN;
 	      errval = EAGAIN;
 	      break;
 	    }

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog       |    8 ++++++++
 NEWS            |   12 ++++++------
 nscd/hstcache.c |   27 +++++++++++++++++++++++----
 3 files changed, 37 insertions(+), 10 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources



More information about the Glibc-cvs mailing list