From 854a149208e8c9e46143fd43e143daf8a5454320 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 30 Jan 1998 17:13:04 +0000 Subject: [PATCH] Fix NSS_STATUS_TRYAGAIN handling. --- nss/getXXbyYY_r.c | 9 ++++++++- nss/getXXent_r.c | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c index 18f0bae03aa..13a6426dfb5 100644 --- a/nss/getXXbyYY_r.c +++ b/nss/getXXbyYY_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -130,6 +130,13 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer, while (no_more == 0) { status = (*fct) (ADD_VARIABLES, resbuf, buffer, buflen H_ERRNO_VAR); + if (status == NSS_STATUS_TRYAGAIN) + { + /* XXX This is very wrong but there is no fast soluation in sight. + Give the previous module a chance to complete it's + operation before errno will be reset by the next call */ + break; + } no_more = __nss_next (&nip, REENTRANT_NAME_STRING, (void **) &fct, status, 0); diff --git a/nss/getXXent_r.c b/nss/getXXent_r.c index 1df51ab768a..b43463b11d8 100644 --- a/nss/getXXent_r.c +++ b/nss/getXXent_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -245,6 +245,13 @@ INTERNAL (REENTRANT_GETNAME) (LOOKUP_TYPE *resbuf, char *buffer, size_t buflen, service_user *current_nip = nip; status = (*fct) (resbuf, buffer, buflen H_ERRNO_VAR); + if (status == NSS_STATUS_TRYAGAIN) + { + /* XXX This is very wrong but there is no fast solution in sight. + Give the previous module a chance to complete it's + operation before errno will be reset by the next call */ + break; + } no_more = __nss_next (&nip, GETFUNC_NAME_STRING, (void **) &fct, status, 0); -- 2.47.2