]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
acl: Fixed listing multiple shared namespaces.
authorTimo Sirainen <tss@iki.fi>
Fri, 16 Sep 2011 13:01:53 +0000 (16:01 +0300)
committerTimo Sirainen <tss@iki.fi>
Fri, 16 Sep 2011 13:01:53 +0000 (16:01 +0300)
src/plugins/acl/acl-plugin.h
src/plugins/acl/acl-shared-storage.c

index deb8e40789010da5c79e34ed39eb2e28ee18cf7c..ce24ef5e14a3445c92ed401aad98f0afc0c8e27e 100644 (file)
@@ -21,7 +21,6 @@ struct acl_user {
        const char *const *groups;
 
        struct acl_lookup_dict *acl_lookup_dict;
-       time_t last_shared_add_check;
 };
 
 struct acl_storage_rights_context {
@@ -32,6 +31,8 @@ struct acl_storage_rights_context {
 struct acl_mailbox_list {
        union mailbox_list_module_context module_ctx;
        struct acl_storage_rights_context rights;
+
+       time_t last_shared_add_check;
 };
 
 extern MODULE_CONTEXT_DEFINE(acl_storage_module, &mail_storage_module_register);
index 06c737bff8957d6a9a3bb9cdad7cc00fd78f5424..a08dd71d599be685d195164e92b1925d6d1a5887 100644 (file)
@@ -65,6 +65,7 @@ acl_shared_namespace_add(struct mail_namespace *ns,
 int acl_shared_namespaces_add(struct mail_namespace *ns)
 {
        struct acl_user *auser = ACL_USER_CONTEXT(ns->user);
+       struct acl_mailbox_list *alist = ACL_LIST_CONTEXT(ns->list);
        struct mail_storage *storage = ns->storage;
        struct acl_lookup_dict_iter *iter;
        const char *name;
@@ -72,11 +73,11 @@ int acl_shared_namespaces_add(struct mail_namespace *ns)
        i_assert(ns->type == NAMESPACE_SHARED);
        i_assert(strcmp(storage->name, SHARED_STORAGE_NAME) == 0);
 
-       if (ioloop_time < auser->last_shared_add_check + SHARED_NS_RETRY_SECS) {
+       if (ioloop_time < alist->last_shared_add_check + SHARED_NS_RETRY_SECS) {
                /* already added, don't bother rechecking */
                return 0;
        }
-       auser->last_shared_add_check = ioloop_time;
+       alist->last_shared_add_check = ioloop_time;
 
        iter = acl_lookup_dict_iterate_visible_init(auser->acl_lookup_dict);
        while ((name = acl_lookup_dict_iterate_visible_next(iter)) != NULL) {