From 650a87f5a67f6e71d4a56e52139a718d86ebbb46 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 15 Feb 2012 20:35:25 +0000 Subject: Wed Feb 15 20:35:25 UTC 2012 --- .../glibc/glibc-2.15-negative-result-cache.patch | 138 +++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 testing/glibc/glibc-2.15-negative-result-cache.patch (limited to 'testing/glibc/glibc-2.15-negative-result-cache.patch') diff --git a/testing/glibc/glibc-2.15-negative-result-cache.patch b/testing/glibc/glibc-2.15-negative-result-cache.patch new file mode 100644 index 000000000..c09e79a17 --- /dev/null +++ b/testing/glibc/glibc-2.15-negative-result-cache.patch @@ -0,0 +1,138 @@ +diff --git a/nscd/aicache.c b/nscd/aicache.c +index aaaf80d..e1f1244 100644 +--- a/nscd/aicache.c ++++ b/nscd/aicache.c +@@ -1,5 +1,5 @@ + /* Cache handling for host lookup. +- Copyright (C) 2004-2008, 2009, 2010, 2011 Free Software Foundation, Inc. ++ Copyright (C) 2004-2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2004. + +@@ -514,8 +514,9 @@ next_nip: + if (fd != -1) + TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); + +- /* If we cannot permanently store the result, so be it. */ +- if (__builtin_expect (db->negtimeout == 0, 0)) ++ /* If we have a transient error or cannot permanently store the ++ result, so be it. */ ++ if (rc4 == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) + { + /* Mark the old entry as obsolete. */ + if (dh != NULL) +diff --git a/nscd/grpcache.c b/nscd/grpcache.c +index e9607c6..a698f36 100644 +--- a/nscd/grpcache.c ++++ b/nscd/grpcache.c +@@ -1,5 +1,5 @@ + /* Cache handling for group lookup. +- Copyright (C) 1998-2008, 2009, 2011 Free Software Foundation, Inc. ++ Copyright (C) 1998-2008, 2009, 2011, 2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1998. + +@@ -120,8 +120,9 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req, + else + written = total; + +- /* If we cannot permanently store the result, so be it. */ +- if (db->negtimeout == 0) ++ /* If we have a transient error or cannot permanently store ++ the result, so be it. */ ++ if (errno == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) + { + /* Mark the old entry as obsolete. */ + if (dh != NULL) +diff --git a/nscd/hstcache.c b/nscd/hstcache.c +index 4d68ade..c72feaa 100644 +--- a/nscd/hstcache.c ++++ b/nscd/hstcache.c +@@ -1,5 +1,5 @@ + /* Cache handling for host lookup. +- Copyright (C) 1998-2008, 2009, 2011 Free Software Foundation, Inc. ++ Copyright (C) 1998-2008, 2009, 2011, 2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1998. + +@@ -141,8 +141,9 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req, + MSG_NOSIGNAL)) != total) + all_written = false; + +- /* If we cannot permanently store the result, so be it. */ +- if (__builtin_expect (db->negtimeout == 0, 0)) ++ /* If we have a transient error or cannot permanently store ++ the result, so be it. */ ++ if (errval == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) + { + /* Mark the old entry as obsolete. */ + if (dh != NULL) +diff --git a/nscd/initgrcache.c b/nscd/initgrcache.c +index 4ac9942..2019991 100644 +--- a/nscd/initgrcache.c ++++ b/nscd/initgrcache.c +@@ -1,5 +1,5 @@ + /* Cache handling for host lookup. +- Copyright (C) 2004-2006, 2008, 2009, 2011 Free Software Foundation, Inc. ++ Copyright (C) 2004-2006, 2008, 2009, 2011, 2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2004. + +@@ -202,8 +202,9 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req, + written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, + MSG_NOSIGNAL)); + +- /* If we cannot permanently store the result, so be it. */ +- if (__builtin_expect (db->negtimeout == 0, 0)) ++ /* If we have a transient error or cannot permanently store ++ the result, so be it. */ ++ if (all_tryagain || __builtin_expect (db->negtimeout == 0, 0)) + { + /* Mark the old entry as obsolete. */ + if (dh != NULL) +diff --git a/nscd/pwdcache.c b/nscd/pwdcache.c +index 49e130c..e2ba09d 100644 +--- a/nscd/pwdcache.c ++++ b/nscd/pwdcache.c +@@ -1,5 +1,5 @@ + /* Cache handling for passwd lookup. +- Copyright (C) 1998-2008, 2009, 2011 Free Software Foundation, Inc. ++ Copyright (C) 1998-2008, 2009, 2011, 2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1998. + +@@ -124,8 +124,9 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req, + written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, + MSG_NOSIGNAL)); + +- /* If we cannot permanently store the result, so be it. */ +- if (__builtin_expect (db->negtimeout == 0, 0)) ++ /* If we have a transient error or cannot permanently store ++ the result, so be it. */ ++ if (errno == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) + { + /* Mark the old entry as obsolete. */ + if (dh != NULL) +diff --git a/nscd/servicescache.c b/nscd/servicescache.c +index d3d5dce..a6337e3 100644 +--- a/nscd/servicescache.c ++++ b/nscd/servicescache.c +@@ -1,5 +1,5 @@ + /* Cache handling for services lookup. +- Copyright (C) 2007, 2008, 2009, 2011 Free Software Foundation, Inc. ++ Copyright (C) 2007, 2008, 2009, 2011, 2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2007. + +@@ -108,8 +108,9 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req, + written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, + MSG_NOSIGNAL)); + +- /* If we cannot permanently store the result, so be it. */ +- if (__builtin_expect (db->negtimeout == 0, 0)) ++ /* If we have a transient error or cannot permanently store ++ the result, so be it. */ ++ if (errval == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) + { + /* Mark the old entry as obsolete. */ + if (dh != NULL) -- cgit v1.2.3-54-g00ecf