From: Timo Sirainen Date: Fri, 4 Mar 2011 16:08:30 +0000 (+0200) Subject: acl: Added acl_backend_nonowner_lookups_rebuild() X-Git-Tag: 2.0.10~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=83ecd8be84b53e63c18afa3e835f490c471b7578;p=thirdparty%2Fdovecot%2Fcore.git acl: Added acl_backend_nonowner_lookups_rebuild() --- diff --git a/src/plugins/acl/acl-api-private.h b/src/plugins/acl/acl-api-private.h index fc2211d2c0..58e7fd6d0a 100644 --- a/src/plugins/acl/acl-api-private.h +++ b/src/plugins/acl/acl-api-private.h @@ -21,6 +21,7 @@ struct acl_backend_vfuncs { const char **name_r); void (*nonowner_lookups_iter_deinit) (struct acl_mailbox_list_context *ctx); + int (*nonowner_lookups_rebuild)(struct acl_backend *backend); struct acl_object *(*object_init)(struct acl_backend *backend, const char *name); diff --git a/src/plugins/acl/acl-api.c b/src/plugins/acl/acl-api.c index 532c882225..ab9b2693d2 100644 --- a/src/plugins/acl/acl-api.c +++ b/src/plugins/acl/acl-api.c @@ -163,6 +163,11 @@ acl_backend_nonowner_lookups_iter_deinit(struct acl_mailbox_list_context **_ctx) ctx->backend->v.nonowner_lookups_iter_deinit(ctx); } +int acl_backend_nonowner_lookups_rebuild(struct acl_backend *backend) +{ + return backend->v.nonowner_lookups_rebuild(backend); +} + void acl_rights_write_id(string_t *dest, const struct acl_rights *right) { switch (right->id_type) { diff --git a/src/plugins/acl/acl-api.h b/src/plugins/acl/acl-api.h index 8f2cac8726..07b83a013c 100644 --- a/src/plugins/acl/acl-api.h +++ b/src/plugins/acl/acl-api.h @@ -121,6 +121,8 @@ int acl_backend_nonowner_lookups_iter_next(struct acl_mailbox_list_context *ctx, const char **name_r); void acl_backend_nonowner_lookups_iter_deinit(struct acl_mailbox_list_context **ctx); +/* Force a rebuild for nonowner lookups index */ +int acl_backend_nonowner_lookups_rebuild(struct acl_backend *backend); struct acl_object *acl_object_init_from_name(struct acl_backend *backend, const char *name); diff --git a/src/plugins/acl/acl-backend-vfile-acllist.c b/src/plugins/acl/acl-backend-vfile-acllist.c index f7e3547cd6..61fec2c541 100644 --- a/src/plugins/acl/acl-backend-vfile-acllist.c +++ b/src/plugins/acl/acl-backend-vfile-acllist.c @@ -388,3 +388,11 @@ acl_backend_vfile_nonowner_iter_deinit(struct acl_mailbox_list_context *ctx) backend->iterating_acllist = FALSE; i_free(ctx); } + +int acl_backend_vfile_nonowner_lookups_rebuild(struct acl_backend *_backend) +{ + struct acl_backend_vfile *backend = + (struct acl_backend_vfile *)_backend; + + return acl_backend_vfile_acllist_rebuild(backend); +} diff --git a/src/plugins/acl/acl-backend-vfile.c b/src/plugins/acl/acl-backend-vfile.c index c64bc7e3f3..997e170d4a 100644 --- a/src/plugins/acl/acl-backend-vfile.c +++ b/src/plugins/acl/acl-backend-vfile.c @@ -1219,6 +1219,7 @@ struct acl_backend_vfuncs acl_backend_vfile = { acl_backend_vfile_nonowner_iter_init, acl_backend_vfile_nonowner_iter_next, acl_backend_vfile_nonowner_iter_deinit, + acl_backend_vfile_nonowner_lookups_rebuild, acl_backend_vfile_object_init, acl_backend_vfile_object_init_parent, acl_backend_vfile_object_deinit, diff --git a/src/plugins/acl/acl-backend-vfile.h b/src/plugins/acl/acl-backend-vfile.h index c37e6c6b95..e0793a21ee 100644 --- a/src/plugins/acl/acl-backend-vfile.h +++ b/src/plugins/acl/acl-backend-vfile.h @@ -47,6 +47,7 @@ int acl_backend_vfile_nonowner_iter_next(struct acl_mailbox_list_context *ctx, const char **name_r); void acl_backend_vfile_nonowner_iter_deinit(struct acl_mailbox_list_context *ctx); +int acl_backend_vfile_nonowner_lookups_rebuild(struct acl_backend *backend); int acl_backend_vfile_object_get_mtime(struct acl_object *aclobj, time_t *mtime_r);