Skip to content

Commit

Permalink
acl: Cleanup - move code to a new acl_vfile_validity_has_changed()
Browse files Browse the repository at this point in the history
  • Loading branch information
sirainen committed Oct 9, 2017
1 parent 391e726 commit 9f34ca5
Showing 1 changed file with 23 additions and 17 deletions.
40 changes: 23 additions & 17 deletions src/plugins/acl/acl-backend-vfile.c
Expand Up @@ -456,6 +456,28 @@ acl_backend_vfile_read_with_retry(struct acl_object *aclobj,
return ret <= 0 ? -1 : 0;
}

static int
acl_vfile_validity_has_changed(struct acl_backend_vfile *backend,
const struct acl_vfile_validity *validity,
const struct stat *st)
{
if (st->st_mtime == validity->last_mtime &&
st->st_size == validity->last_size) {
/* same timestamp, but if it was modified within the
same second we want to refresh it again later (but
do it only after a couple of seconds so we don't
keep re-reading it all the time within those
seconds) */
time_t cache_secs = backend->cache_secs;

if (validity->last_read_time != 0 &&
(st->st_mtime < validity->last_read_time - cache_secs ||
ioloop_time - validity->last_read_time <= cache_secs))
return FALSE;
}
return TRUE;
}

static int
acl_backend_vfile_refresh(struct acl_object *aclobj, const char *path,
struct acl_vfile_validity *validity)
Expand Down Expand Up @@ -489,23 +511,7 @@ acl_backend_vfile_refresh(struct acl_object *aclobj, const char *path,
i_error("stat(%s) failed: %m", path);
return -1;
}

if (st.st_mtime == validity->last_mtime &&
st.st_size == validity->last_size) {
/* same timestamp, but if it was modified within the
same second we want to refresh it again later (but
do it only after a couple of seconds so we don't
keep re-reading it all the time within those
seconds) */
time_t cache_secs = backend->cache_secs;

if (validity->last_read_time != 0 &&
(st.st_mtime < validity->last_read_time - cache_secs ||
ioloop_time - validity->last_read_time <= cache_secs))
return 0;
}

return 1;
return acl_vfile_validity_has_changed(backend, validity, &st) ? 1 : 0;
}

int acl_backend_vfile_object_get_mtime(struct acl_object *aclobj,
Expand Down

0 comments on commit 9f34ca5

Please sign in to comment.