summaryrefslogtreecommitdiffstats
path: root/server/providers/proxy.c
diff options
context:
space:
mode:
authorSimo Sorce <ssorce@redhat.com>2009-10-24 13:36:34 -0400
committerStephen Gallagher <sgallagh@redhat.com>2009-10-27 10:42:12 -0400
commit3a21103f61bf9b60256cc2d0da54b757b634319f (patch)
treec958e19a991e8d6b9c6e3dbe0cc4f62e4ad425b2 /server/providers/proxy.c
parentee633d9fe3b48a88387edab7978bb16422525d21 (diff)
downloadsssd-3a21103f61bf9b60256cc2d0da54b757b634319f.tar.gz
sssd-3a21103f61bf9b60256cc2d0da54b757b634319f.tar.xz
sssd-3a21103f61bf9b60256cc2d0da54b757b634319f.zip
Move responsibility for entry expiration timeout
The providers are now responsible for determining how long a cached entry is considered valid. The default is the same as before (600s)
Diffstat (limited to 'server/providers/proxy.c')
-rw-r--r--server/providers/proxy.c30
1 files changed, 22 insertions, 8 deletions
diff --git a/server/providers/proxy.c b/server/providers/proxy.c
index e3b31c3dd..bce6a75ae 100644
--- a/server/providers/proxy.c
+++ b/server/providers/proxy.c
@@ -58,6 +58,7 @@ struct proxy_nss_ops {
struct proxy_ctx {
struct be_ctx *be;
+ int entry_cache_timeout;
struct proxy_nss_ops ops;
};
@@ -415,7 +416,8 @@ static void get_pw_name_process(struct tevent_req *subreq)
state->pwd->pw_gid,
state->pwd->pw_gecos,
state->pwd->pw_dir,
- state->pwd->pw_shell, NULL);
+ state->pwd->pw_shell,
+ NULL, ctx->entry_cache_timeout);
if (!subreq) {
tevent_req_error(req, ENOMEM);
return;
@@ -607,7 +609,8 @@ static void get_pw_uid_process(struct tevent_req *subreq)
state->pwd->pw_gid,
state->pwd->pw_gecos,
state->pwd->pw_dir,
- state->pwd->pw_shell, NULL);
+ state->pwd->pw_shell,
+ NULL, ctx->entry_cache_timeout);
if (!subreq) {
tevent_req_error(req, ENOMEM);
return;
@@ -829,7 +832,8 @@ again:
state->pwd->pw_gid,
state->pwd->pw_gecos,
state->pwd->pw_dir,
- state->pwd->pw_shell, NULL);
+ state->pwd->pw_shell,
+ NULL, ctx->entry_cache_timeout);
if (!subreq) {
tevent_req_error(req, ENOMEM);
return;
@@ -1000,7 +1004,8 @@ again:
state->domain,
state->grp->gr_name,
state->grp->gr_gid,
- members, NULL, NULL);
+ members, NULL, NULL,
+ ctx->entry_cache_timeout);
if (!subreq) {
tevent_req_error(req, ENOMEM);
return;
@@ -1214,7 +1219,8 @@ again:
state->domain,
state->grp->gr_name,
state->grp->gr_gid,
- members, NULL, NULL);
+ members, NULL, NULL,
+ ctx->entry_cache_timeout);
if (!subreq) {
tevent_req_error(req, ENOMEM);
return;
@@ -1442,7 +1448,8 @@ again:
state->domain,
state->grp->gr_name,
state->grp->gr_gid,
- members, NULL, NULL);
+ members, NULL, NULL,
+ ctx->entry_cache_timeout);
if (!subreq) {
tevent_req_error(req, ENOMEM);
return;
@@ -1582,7 +1589,8 @@ static void get_initgr_process(struct tevent_req *subreq)
state->pwd->pw_gid,
state->pwd->pw_gecos,
state->pwd->pw_dir,
- state->pwd->pw_shell, NULL);
+ state->pwd->pw_shell,
+ NULL, ctx->entry_cache_timeout);
if (!subreq) {
tevent_req_error(req, ENOMEM);
return;
@@ -1893,7 +1901,8 @@ again:
state->grp->gr_name,
state->grp->gr_gid,
(const char **)state->grp->gr_mem,
- NULL, NULL);
+ NULL, NULL,
+ ctx->entry_cache_timeout);
if (!subreq) {
ret = ENOMEM;
goto fail;
@@ -2233,6 +2242,11 @@ int sssm_proxy_init(struct be_ctx *bectx,
}
ctx->be = bectx;
+ ret = confdb_get_int(bectx->cdb, ctx, bectx->conf_path,
+ CONFDB_DOMAIN_ENTRY_CACHE_TIMEOUT, 600,
+ &ctx->entry_cache_timeout);
+ if (ret != EOK) goto done;
+
ret = confdb_get_string(bectx->cdb, ctx, bectx->conf_path,
CONFDB_PROXY_LIBNAME, NULL, &libname);
if (ret != EOK) goto done;