summaryrefslogtreecommitdiffstats
path: root/src/responder/nss/nsssrv_cmd.c
diff options
context:
space:
mode:
authorPavel Reichl <preichl@redhat.com>2014-12-09 11:01:13 +0000
committerSumit Bose <sbose@redhat.com>2014-12-17 15:57:34 +0100
commit4bbcc2d6d3f16b015796818746a45134861c93a4 (patch)
tree0f569c29ae1357dd2acbd73b030e01d7b37875a0 /src/responder/nss/nsssrv_cmd.c
parentd7b90921c1a404f0d9fb8384a8fd55fd15b86916 (diff)
downloadsssd-4bbcc2d6d3f16b015796818746a45134861c93a4.tar.gz
sssd-4bbcc2d6d3f16b015796818746a45134861c93a4.tar.xz
sssd-4bbcc2d6d3f16b015796818746a45134861c93a4.zip
SYSDB: sysdb_search_object_by_sid returns ENOENT
sysdb_search_object_by_sid returns ENOENT if no results are found. Part od solution for: https://fedorahosted.org/sssd/ticket/1991 Fixes: https://fedorahosted.org/sssd/ticket/2520 Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
Diffstat (limited to 'src/responder/nss/nsssrv_cmd.c')
-rw-r--r--src/responder/nss/nsssrv_cmd.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c
index 80ac221e2..3c5d45071 100644
--- a/src/responder/nss/nsssrv_cmd.c
+++ b/src/responder/nss/nsssrv_cmd.c
@@ -4491,20 +4491,10 @@ static errno_t nss_cmd_getbysid_search(struct nss_dom_ctx *dctx)
ret = sysdb_search_object_by_sid(cmdctx, dom, cmdctx->secid, NULL,
&dctx->res);
- if (ret != EOK) {
- DEBUG(SSSDBG_CRIT_FAILURE, "Failed to make request to our cache!\n");
- return EIO;
- }
-
- if (dctx->res->count > 1) {
- DEBUG(SSSDBG_FATAL_FAILURE, "getbysid call returned more than one " \
- "result !?!\n");
- return ENOENT;
- }
-
- if (dctx->res->count == 0) {
- DEBUG(SSSDBG_OP_FAILURE, "No results for getbysid call.\n");
+ if (ret == ENOENT) {
if (!dctx->check_provider) {
+ DEBUG(SSSDBG_OP_FAILURE, "No results for getbysid call.\n");
+
/* set negative cache only if not result of cache check */
ret = sss_ncache_set_sid(nctx->ncache, false, cmdctx->secid);
if (ret != EOK) {
@@ -4513,6 +4503,15 @@ static errno_t nss_cmd_getbysid_search(struct nss_dom_ctx *dctx)
}
}
return ENOENT;
+ } else if (ret != EOK) {
+ DEBUG(SSSDBG_CRIT_FAILURE, "Failed to make request to our cache!\n");
+ return EIO;
+ }
+
+ if (dctx->res->count > 1) {
+ DEBUG(SSSDBG_FATAL_FAILURE, "getbysid call returned more than one " \
+ "result !?!\n");
+ return ENOENT;
}
/* if this is a caching provider (or if we haven't checked the cache