summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Gallagher <sgallagh@redhat.com>2011-04-15 09:20:48 -0400
committerStephen Gallagher <sgallagh@redhat.com>2011-04-15 11:36:51 -0400
commitf858925bda6c5dbbe178b9abb6e85d8ce53c195f (patch)
tree5597d7289682a7d432ebfdfda554bcba8a5db1ac
parent87cc48df526d01e5085a1acf736e11219be34760 (diff)
downloadsssd-f858925bda6c5dbbe178b9abb6e85d8ce53c195f.tar.gz
sssd-f858925bda6c5dbbe178b9abb6e85d8ce53c195f.tar.bz2
sssd-f858925bda6c5dbbe178b9abb6e85d8ce53c195f.zip
Fix a regression with the negative cache in multi-domain configurations
-rw-r--r--src/responder/nss/nsssrv_cmd.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c
index 2153d649..b897c7cd 100644
--- a/src/responder/nss/nsssrv_cmd.c
+++ b/src/responder/nss/nsssrv_cmd.c
@@ -532,12 +532,17 @@ static int nss_cmd_getpwnam_search(struct nss_dom_ctx *dctx)
/* if neg cached, return we didn't find it */
if (ret == EEXIST) {
- DEBUG(2, ("User [%s] does not exist! (negative cache)\n", name));
+ DEBUG(2, ("User [%s] does not exist in [%s]! (negative cache)\n",
+ name, dom->name));
/* if a multidomain search, try with next */
if (cmdctx->check_next) {
dom = dom->next;
continue;
}
+ /* There are no further domains or this was a
+ * fully-qualified user request.
+ */
+ return ENOENT;
}
DEBUG(4, ("Requesting info for [%s@%s]\n", name, dom->name));
@@ -1794,12 +1799,17 @@ static int nss_cmd_getgrnam_search(struct nss_dom_ctx *dctx)
/* if neg cached, return we didn't find it */
if (ret == EEXIST) {
- DEBUG(2, ("Group [%s] does not exist! (negative cache)\n", name));
+ DEBUG(2, ("Group [%s] does not exist in [%s]! (negative cache)\n",
+ name, dom->name));
/* if a multidomain search, try with next */
if (cmdctx->check_next) {
dom = dom->next;
continue;
}
+ /* There are no further domains or this was a
+ * fully-qualified user request.
+ */
+ return ENOENT;
}
DEBUG(4, ("Requesting info for [%s@%s]\n", name, dom->name));
@@ -2827,12 +2837,17 @@ static int nss_cmd_initgroups_search(struct nss_dom_ctx *dctx)
/* if neg cached, return we didn't find it */
if (ret == EEXIST) {
- DEBUG(2, ("User [%s] does not exist! (negative cache)\n", name));
+ DEBUG(2, ("User [%s] does not exist in [%s]! (negative cache)\n",
+ dom->name, name));
/* if a multidomain search, try with next */
if (cmdctx->check_next) {
dom = dom->next;
continue;
}
+ /* There are no further domains or this was a
+ * fully-qualified user request.
+ */
+ return ENOENT;
}
DEBUG(4, ("Requesting info for [%s@%s]\n", name, dom->name));