From b187d74a6d6e4e0c1102b510f7fc8340d41ae30a Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Fri, 11 Sep 2009 16:11:23 -0400 Subject: Fix getgrnam and getgrgid calls The patch that added check_cache() broke them, no results returned for any group with actual members ... --- server/responder/nss/nsssrv_cmd.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'server/responder') diff --git a/server/responder/nss/nsssrv_cmd.c b/server/responder/nss/nsssrv_cmd.c index 926009335..8ca0be682 100644 --- a/server/responder/nss/nsssrv_cmd.c +++ b/server/responder/nss/nsssrv_cmd.c @@ -287,16 +287,16 @@ static errno_t check_cache(struct nss_dom_ctx *dctx, sss_dp_callback_t cb = NULL; if (dctx->check_provider) { - switch (res->count) { - case 0: + if (res->count == 0) { /* This is a cache miss. We need to get the updated user * information before returning it. */ call_provider = true; cb = callback; - break; - case 1: + } else if ((req_type == SSS_DP_GROUP) || + ((req_type == SSS_DP_USER) && (res->count == 1))) { + timeout = nctx->cache_timeout; refresh_timeout = nctx->cache_refresh_timeout; now = time(NULL); @@ -323,10 +323,12 @@ static errno_t check_cache(struct nss_dom_ctx *dctx, call_provider = false; cb = NULL; } - break; - default: - DEBUG(1, ("getpwnam call returned more than one result !?!\n")); + } else { + if (req_type == SSS_DP_USER) { + DEBUG(1, ("getpwXXX call returned more than one result!" + " DB Corrupted?\n")); + } ret = nss_cmd_send_error(cmdctx, ENOENT); if (ret != EOK) { NSS_CMD_FATAL_ERROR_CODE(cctx, ENOENT); -- cgit