summaryrefslogtreecommitdiffstats
path: root/src/providers/dp_refresh.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/providers/dp_refresh.c')
-rw-r--r--src/providers/dp_refresh.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/providers/dp_refresh.c b/src/providers/dp_refresh.c
index 5b0a394a2..59d858549 100644
--- a/src/providers/dp_refresh.c
+++ b/src/providers/dp_refresh.c
@@ -31,6 +31,7 @@
static errno_t be_refresh_get_values(TALLOC_CTX *mem_ctx,
struct sss_domain_info *domain,
+ time_t period,
const char *objectclass,
struct ldb_dn *base_dn,
const char *attr,
@@ -52,7 +53,7 @@ static errno_t be_refresh_get_values(TALLOC_CTX *mem_ctx,
}
filter = talloc_asprintf(tmp_ctx, "(&(%s<=%lld))",
- SYSDB_CACHE_EXPIRE, (long long) now);
+ SYSDB_CACHE_EXPIRE, (long long) now + period);
if (filter == NULL) {
ret = ENOMEM;
goto done;
@@ -90,6 +91,7 @@ done:
static errno_t be_refresh_get_netgroups(TALLOC_CTX *mem_ctx,
struct sss_domain_info *domain,
+ time_t period,
char ***_values)
{
struct ldb_dn *base_dn = NULL;
@@ -100,7 +102,7 @@ static errno_t be_refresh_get_netgroups(TALLOC_CTX *mem_ctx,
return ENOMEM;
}
- ret = be_refresh_get_values(mem_ctx, domain, SYSDB_NETGROUP_CLASS,
+ ret = be_refresh_get_values(mem_ctx, domain, period, SYSDB_NETGROUP_CLASS,
base_dn, SYSDB_NAME, _values);
talloc_free(base_dn);
@@ -110,6 +112,7 @@ static errno_t be_refresh_get_netgroups(TALLOC_CTX *mem_ctx,
typedef errno_t
(*be_refresh_get_values_t)(TALLOC_CTX *mem_ctx,
struct sss_domain_info *domain,
+ time_t period,
char ***_values);
@@ -169,6 +172,7 @@ struct be_refresh_state {
struct be_refresh_ctx *ctx;
struct be_refresh_cb *cb;
enum be_refresh_type index;
+ time_t period;
};
static errno_t be_refresh_step(struct tevent_req *req);
@@ -193,6 +197,7 @@ struct tevent_req *be_refresh_send(TALLOC_CTX *mem_ctx,
state->ev = ev;
state->be_ctx = be_ctx;
+ state->period = be_ptask_get_period(be_ptask);
state->ctx = talloc_get_type(pvt, struct be_refresh_ctx);
if (state->ctx == NULL) {
ret = EINVAL;
@@ -247,7 +252,8 @@ static errno_t be_refresh_step(struct tevent_req *req)
goto done;
}
- ret = state->cb->get_values(state, state->be_ctx->domain, &values);
+ ret = state->cb->get_values(state, state->be_ctx->domain, state->period,
+ &values);
if (ret != EOK) {
DEBUG(SSSDBG_CRIT_FAILURE, ("Unable to obtain DN list [%d]: %s\n",
ret, sss_strerror(ret)));