aboutsummaryrefslogtreecommitdiff
path: root/nscd
diff options
context:
space:
mode:
Diffstat (limited to 'nscd')
-rw-r--r--nscd/grpcache.c4
-rw-r--r--nscd/nscd_getgr_r.c11
-rw-r--r--nscd/nscd_getpw_r.c11
-rw-r--r--nscd/nscd_proto.h4
4 files changed, 24 insertions, 6 deletions
diff --git a/nscd/grpcache.c b/nscd/grpcache.c
index 2b837f8bc1..3f3f4ba0ec 100644
--- a/nscd/grpcache.c
+++ b/nscd/grpcache.c
@@ -407,7 +407,7 @@ cache_getgrgid (void *v_param)
if (grp != NULL)
{
if (debug_flag)
- dbg_log (_("Found \"%d\" in cache !\n"), gid);
+ dbg_log (_("Found \"%d\" in cache !"), gid);
++poshit;
gr_send_answer (param->conn, grp);
@@ -422,7 +422,7 @@ cache_getgrgid (void *v_param)
int status;
if (debug_flag)
- dbg_log (_("Doesn't found \"%d\" in cache !\n"), gid);
+ dbg_log (_("Doesn't found \"%d\" in cache !"), gid);
pthread_rwlock_unlock (&grplock);
diff --git a/nscd/nscd_getgr_r.c b/nscd/nscd_getgr_r.c
index 8129d81d66..27d05e05c6 100644
--- a/nscd/nscd_getgr_r.c
+++ b/nscd/nscd_getgr_r.c
@@ -29,6 +29,8 @@
#include "nscd.h"
#include "nscd_proto.h"
+int __nss_not_use_nscd_group;
+
static int __nscd_getgr_r (const char *key, request_type type,
struct group *resultbuf, char *buffer,
size_t buflen);
@@ -98,8 +100,11 @@ __nscd_getgr_r (const char *key, request_type type, struct group *resultbuf,
ssize_t nbytes;
if (sock == -1)
- /* Returning two signals that contacting the daemon failed. */
- return 2;
+ {
+ /* Returning two signals that contacting the daemon failed. */
+ __nss_not_use_nscd_group = 1;
+ return 1;
+ }
req.version = NSCD_VERSION;
req.type = type;
@@ -127,7 +132,9 @@ __nscd_getgr_r (const char *key, request_type type, struct group *resultbuf,
if (gr_resp.found == -1)
{
+ /* The daemon does not cache this database. */
close (sock);
+ __nss_not_use_nscd_group = 1;
return 1;
}
diff --git a/nscd/nscd_getpw_r.c b/nscd/nscd_getpw_r.c
index 4420b80399..d9401ed3c9 100644
--- a/nscd/nscd_getpw_r.c
+++ b/nscd/nscd_getpw_r.c
@@ -29,6 +29,8 @@
#include "nscd.h"
+int __nss_not_use_nscd_passwd;
+
static int __nscd_getpw_r (const char *key, request_type type,
struct passwd *resultbuf, char *buffer,
size_t buflen);
@@ -98,8 +100,11 @@ __nscd_getpw_r (const char *key, request_type type, struct passwd *resultbuf,
ssize_t nbytes;
if (sock == -1)
- /* Returning two signals that contacting the daemon failed. */
- return 2;
+ {
+ /* Returning two signals that contacting the daemon failed. */
+ __nss_not_use_nscd_passwd = 1;
+ return 1;
+ }
req.version = NSCD_VERSION;
req.type = type;
@@ -127,7 +132,9 @@ __nscd_getpw_r (const char *key, request_type type, struct passwd *resultbuf,
if (pw_resp.found == -1)
{
+ /* The daemon does not cache this database. */
close (sock);
+ __nss_not_use_nscd_passwd = 1;
return 1;
}
diff --git a/nscd/nscd_proto.h b/nscd/nscd_proto.h
index 6f7b30df88..f82f86c1ab 100644
--- a/nscd/nscd_proto.h
+++ b/nscd/nscd_proto.h
@@ -23,6 +23,10 @@
#include <grp.h>
#include <pwd.h>
+/* Variables for communication between NSCD handler functions and NSS. */
+extern int __nss_not_use_nscd_passwd;
+extern int __nss_not_use_nscd_group;
+
extern int __nscd_getpwnam_r __P ((const char *name, struct passwd *resultbuf,
char *buffer, size_t buflen));
extern int __nscd_getpwuid_r __P ((uid_t uid, struct passwd *resultbuf,