]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: shared - Fix using proper namespace settings for shared users
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Sat, 2 Dec 2023 23:53:29 +0000 (01:53 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:11 +0000 (12:34 +0200)
src/lib-storage/index/shared/shared-storage.c
src/lib-storage/mail-storage.c

index 58a56c03e5cdaee43addb60c7bee24d93259ff39..2178dee6261c1aa23130f0eca4880b0de74f5dc2 100644 (file)
@@ -355,7 +355,8 @@ shared_mail_user_init(struct mail_storage *_storage,
                { NULL, NULL }
        };
 
-       struct event *set_event = event_create(ns->list->event);
+       struct event *set_event = event_create(user->event);
+       event_add_str(set_event, "namespace", ns->set->name);
        event_set_ptr(set_event, SETTINGS_EVENT_VAR_EXPAND_TABLE, tab);
        event_set_ptr(set_event, SETTINGS_EVENT_VAR_EXPAND_FUNC_TABLE,
                      func_tab);
index ed670435d3a1ec19af725fed03b481d33bf41ef0..81c084c1d70652416560dd5cf4755682d09b89e6 100644 (file)
@@ -339,7 +339,11 @@ mail_storage_create_list(struct mail_namespace *ns,
           storage-specific defaults for mailbox list settings. */
        event_set_ptr(set_event, SETTINGS_EVENT_FILTER_NAME,
                      (void *)storage_class->name);
-       event_add_str(set_event, "namespace", ns->set->name);
+       /* Set namespace, but don't overwrite if it already is set.
+          Shared storage uses the same shared namespace here also for the
+          user's root prefix="" namespace. */
+       if (event_find_field_recursive(set_event, "namespace") == NULL)
+               event_add_str(set_event, "namespace", ns->set->name);
 
        if ((flags & MAIL_STORAGE_FLAG_SHARED_DYNAMIC) != 0) {
                mail_storage_create_ns_instance(ns, set_event);