From a290ace39af184d878568e17588b6b2210aea63f Mon Sep 17 00:00:00 2001 From: Michal Zidek Date: Tue, 20 Nov 2012 13:52:12 +0100 Subject: sss_cache: Small refactor. The logic that checks if sssd_nss is running and then sends SIGHUP to monitor or removes the caches was moved to a function sss_memcache_clear_all() and made public in tools_util.h. --- src/tools/sss_cache.c | 61 +++------------------------------------------------ 1 file changed, 3 insertions(+), 58 deletions(-) (limited to 'src/tools/sss_cache.c') diff --git a/src/tools/sss_cache.c b/src/tools/sss_cache.c index 368b1df9d..9305db514 100644 --- a/src/tools/sss_cache.c +++ b/src/tools/sss_cache.c @@ -92,7 +92,6 @@ errno_t invalidate_entry(TALLOC_CTX *ctx, struct sysdb_ctx *sysdb, bool invalidate_entries(TALLOC_CTX *ctx, struct sysdb_ctx *sysdb, enum sss_cache_entry entry_type, const char *filter, const char *name); -static int clear_fastcache(bool *sssd_nss_is_off); int main(int argc, const char *argv[]) { @@ -100,9 +99,7 @@ int main(int argc, const char *argv[]) struct cache_tool_ctx *tctx = NULL; struct sysdb_ctx *sysdb; int i; - bool sssd_nss_is_off; bool skipped = true; - FILE *clear_mc_flag; ret = init_context(argc, argv, &tctx); if (ret != EOK) { @@ -145,71 +142,19 @@ int main(int argc, const char *argv[]) ret = ENOENT; goto done; } else { - ret = clear_fastcache(&sssd_nss_is_off); + ret = sss_memcache_clear_all(); if (ret != EOK) { - DEBUG(SSSDBG_CRIT_FAILURE, ("Failed to clear caches.\n")); + DEBUG(SSSDBG_CRIT_FAILURE, ("Failed to clear memory cache.\n")); goto done; } - if (!sssd_nss_is_off) { - /* sssd_nss is running -> signal monitor to invalidate fastcache */ - clear_mc_flag = fopen(SSS_NSS_MCACHE_DIR"/"CLEAR_MC_FLAG, "w"); - if (clear_mc_flag == NULL) { - DEBUG(SSSDBG_CRIT_FAILURE, - ("Failed to create clear_mc_flag file. " - "Memory cache will not be cleared.\n")); - goto done; - } - ret = fclose(clear_mc_flag); - if (ret != 0) { - ret = errno; - DEBUG(SSSDBG_CRIT_FAILURE, - ("Unable to close file descriptor: %s\n", - strerror(ret))); - goto done; - } - - DEBUG(SSSDBG_TRACE_FUNC, ("Sending SIGHUP to monitor.\n")); - ret = signal_sssd(SIGHUP); - if (ret != EOK) { - DEBUG(SSSDBG_CRIT_FAILURE, - ("Failed to send SIGHUP to monitor.\n")); - goto done; - } - } } + ret = EOK; done: if (tctx) talloc_free(tctx); return ret; } -static int clear_fastcache(bool *sssd_nss_is_off) -{ - int ret; - ret = sss_memcache_invalidate(SSS_NSS_MCACHE_DIR"/passwd"); - if (ret != EOK) { - if (ret == EACCES) { - *sssd_nss_is_off = false; - return EOK; - } else { - return ret; - } - } - - ret = sss_memcache_invalidate(SSS_NSS_MCACHE_DIR"/group"); - if (ret != EOK) { - if (ret == EACCES) { - *sssd_nss_is_off = false; - return EOK; - } else { - return ret; - } - } - - *sssd_nss_is_off = true; - return EOK; -} - bool invalidate_entries(TALLOC_CTX *ctx, struct sysdb_ctx *sysdb, enum sss_cache_entry entry_type, const char *filter, const char *name) -- cgit