summaryrefslogtreecommitdiff
path: root/multilib-testing/lib32-glibc/glibc-2.15-negative-result-cache.patch
diff options
context:
space:
mode:
Diffstat (limited to 'multilib-testing/lib32-glibc/glibc-2.15-negative-result-cache.patch')
-rw-r--r--multilib-testing/lib32-glibc/glibc-2.15-negative-result-cache.patch138
1 files changed, 138 insertions, 0 deletions
diff --git a/multilib-testing/lib32-glibc/glibc-2.15-negative-result-cache.patch b/multilib-testing/lib32-glibc/glibc-2.15-negative-result-cache.patch
new file mode 100644
index 000000000..c09e79a17
--- /dev/null
+++ b/multilib-testing/lib32-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 <drepper@redhat.com>, 2004.
+
+@@ -514,8 +514,9 @@ next_nip:
+ if (fd != -1)
+ TEMP_FAILURE_RETRY (send (fd, &notfound, 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 <drepper@cygnus.com>, 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 <drepper@cygnus.com>, 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 <drepper@redhat.com>, 2004.
+
+@@ -202,8 +202,9 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
+ written = TEMP_FAILURE_RETRY (send (fd, &notfound, 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 <drepper@cygnus.com>, 1998.
+
+@@ -124,8 +124,9 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
+ written = TEMP_FAILURE_RETRY (send (fd, &notfound, 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 <drepper@drepper.com>, 2007.
+
+@@ -108,8 +108,9 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req,
+ written = TEMP_FAILURE_RETRY (send (fd, &notfound, 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)