diff options
author | Lukas Slebodnik <lslebodn@redhat.com> | 2013-07-29 15:24:34 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2013-08-08 11:13:41 +0200 |
commit | 3f6771275918477e2686063a1c08835d5aaae245 (patch) | |
tree | afa690ccba59c91f60b0520d22f2ddd6efecb1f9 /src/responder/nss/nsssrv_netgroup.c | |
parent | 6eb816852316f878e5c7aaac9b4ec7578621852a (diff) | |
download | sssd-3f6771275918477e2686063a1c08835d5aaae245.tar.gz sssd-3f6771275918477e2686063a1c08835d5aaae245.tar.xz sssd-3f6771275918477e2686063a1c08835d5aaae245.zip |
NSS: Clear cached netgroups if a request comes in from the sss_cachesssd-1.9.2-97.el6
In order for sss_cache to work correctly, we must also signal the nss
responder to invalidate the hash table requests.
https://fedorahosted.org/sssd/ticket/1759
Diffstat (limited to 'src/responder/nss/nsssrv_netgroup.c')
-rw-r--r-- | src/responder/nss/nsssrv_netgroup.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/responder/nss/nsssrv_netgroup.c b/src/responder/nss/nsssrv_netgroup.c index d415d81c1..3f1fa8795 100644 --- a/src/responder/nss/nsssrv_netgroup.c +++ b/src/responder/nss/nsssrv_netgroup.c @@ -1021,3 +1021,33 @@ netgroup_hash_delete_cb(hash_entry_t *item, * table */ netgr->lookup_table = NULL; } + +errno_t nss_orphan_netgroups(struct nss_ctx *nctx) +{ + int hret; + unsigned long mcount; + unsigned long i; + hash_key_t *netgroups; + + if (!nctx || !nctx->netgroups) { + return EINVAL; + } + + hret = hash_keys(nctx->netgroups, &mcount, &netgroups); + if (hret != HASH_SUCCESS) { + return EIO; + } + + DEBUG(SSSDBG_TRACE_FUNC, ("Removing netgroups from memory cache.\n")); + + for (i = 0; i < mcount; i++) { + /* netgroup entry will be deleted by setnetgrent_result_timeout */ + hret = hash_delete(nctx->netgroups, &netgroups[i]); + if (hret != HASH_SUCCESS) { + DEBUG(SSSDBG_MINOR_FAILURE, ("Could not delete key from hash\n")); + continue; + } + } + + return EOK; +} |