diff options
author | Pavel Reichl <preichl@redhat.com> | 2014-12-09 11:01:13 +0000 |
---|---|---|
committer | Sumit Bose <sbose@redhat.com> | 2014-12-17 15:57:34 +0100 |
commit | 4bbcc2d6d3f16b015796818746a45134861c93a4 (patch) | |
tree | 0f569c29ae1357dd2acbd73b030e01d7b37875a0 /src/responder/nss/nsssrv_cmd.c | |
parent | d7b90921c1a404f0d9fb8384a8fd55fd15b86916 (diff) | |
download | sssd-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.c | 25 |
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 |