summaryrefslogtreecommitdiff
path: root/src/responder/nss
diff options
context:
space:
mode:
authorJan Zeleny <jzeleny@redhat.com>2012-05-31 18:08:46 -0400
committerStephen Gallagher <sgallagh@redhat.com>2012-06-10 15:45:42 -0400
commite9f08ebaba5ec61af74c112f50c7d66257998c97 (patch)
tree947eab8080ae903f8d0261f205a7a7896196223f /src/responder/nss
parent84c611c1b7c04cc7735ab54d4e5f48284b79e6fb (diff)
downloadsssd-e9f08ebaba5ec61af74c112f50c7d66257998c97.tar.gz
sssd-e9f08ebaba5ec61af74c112f50c7d66257998c97.tar.bz2
sssd-e9f08ebaba5ec61af74c112f50c7d66257998c97.zip
Allow fast memcache timeout to be configurable
https://fedorahosted.org/sssd/ticket/1318
Diffstat (limited to 'src/responder/nss')
-rw-r--r--src/responder/nss/nsssrv.c14
-rw-r--r--src/responder/nss/nsssrv_mmap_cache.c4
-rw-r--r--src/responder/nss/nsssrv_mmap_cache.h2
3 files changed, 15 insertions, 5 deletions
diff --git a/src/responder/nss/nsssrv.c b/src/responder/nss/nsssrv.c
index 9cb4a569..85bf6dc8 100644
--- a/src/responder/nss/nsssrv.c
+++ b/src/responder/nss/nsssrv.c
@@ -262,6 +262,7 @@ int nss_process_init(TALLOC_CTX *mem_ctx,
struct sss_cmd_table *nss_cmds;
struct be_conn *iter;
struct nss_ctx *nctx;
+ int memcache_timeout;
int ret, max_retries;
int hret;
int fd_limit;
@@ -323,16 +324,25 @@ int nss_process_init(TALLOC_CTX *mem_ctx,
}
/* create mmap caches */
+ ret = confdb_get_int(nctx->rctx->cdb,
+ CONFDB_NSS_CONF_ENTRY,
+ CONFDB_MEMCACHE_TIMEOUT,
+ 300, &memcache_timeout);
+ if (ret != EOK) {
+ DEBUG(0, ("Failed to set up automatic reconnection\n"));
+ return ret;
+ }
+
/* TODO: read cache sizes from configuration */
ret = sss_mmap_cache_init(nctx, "passwd", SSS_MC_PASSWD,
- 50000,
+ 50000, (time_t)memcache_timeout,
&nctx->pwd_mc_ctx);
if (ret) {
DEBUG(SSSDBG_CRIT_FAILURE, ("passwd mmap cache is DISABLED"));
}
ret = sss_mmap_cache_init(nctx, "group", SSS_MC_GROUP,
- 50000,
+ 50000, (time_t)memcache_timeout,
&nctx->grp_mc_ctx);
if (ret) {
DEBUG(SSSDBG_CRIT_FAILURE, ("group mmap cache is DISABLED"));
diff --git a/src/responder/nss/nsssrv_mmap_cache.c b/src/responder/nss/nsssrv_mmap_cache.c
index e60d0619..07498a9b 100644
--- a/src/responder/nss/nsssrv_mmap_cache.c
+++ b/src/responder/nss/nsssrv_mmap_cache.c
@@ -602,7 +602,7 @@ static void sss_mc_header_update(struct sss_mc_ctx *mc_ctx, int status)
errno_t sss_mmap_cache_init(TALLOC_CTX *mem_ctx, const char *name,
enum sss_mc_type type, size_t n_elem,
- struct sss_mc_ctx **mcc)
+ time_t timeout, struct sss_mc_ctx **mcc)
{
struct sss_mc_ctx *mc_ctx = NULL;
unsigned int rseed;
@@ -634,7 +634,7 @@ errno_t sss_mmap_cache_init(TALLOC_CTX *mem_ctx, const char *name,
mc_ctx->type = type;
- mc_ctx->valid_time_slot = 300; /* 5 min. FIXME: parametrize */
+ mc_ctx->valid_time_slot = timeout;
mc_ctx->file = talloc_asprintf(mc_ctx, "%s/%s",
SSS_NSS_MCACHE_DIR, name);
diff --git a/src/responder/nss/nsssrv_mmap_cache.h b/src/responder/nss/nsssrv_mmap_cache.h
index 72fcf220..81241b24 100644
--- a/src/responder/nss/nsssrv_mmap_cache.h
+++ b/src/responder/nss/nsssrv_mmap_cache.h
@@ -32,7 +32,7 @@ enum sss_mc_type {
errno_t sss_mmap_cache_init(TALLOC_CTX *mem_ctx, const char *name,
enum sss_mc_type type, size_t n_elem,
- struct sss_mc_ctx **mcc);
+ time_t valid_time, struct sss_mc_ctx **mcc);
errno_t sss_mmap_cache_pw_store(struct sss_mc_ctx *mcc,
struct sized_string *name,