]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Try to get special_use flags using cached mailbox settings
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Fri, 7 Mar 2025 10:56:55 +0000 (12:56 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Mar 2025 13:01:57 +0000 (13:01 +0000)
src/lib-storage/list/mailbox-list-iter.c

index 6d41dfedb99748e8ee83b73b1601582fdbfca352..dfa1e4501a31d3d16f9b464c44b5557924161a12 100644 (file)
@@ -1014,11 +1014,17 @@ mailbox_list_iter_next_call(struct mailbox_list_iterate_context *ctx)
        if ((ctx->flags & MAILBOX_LIST_ITER_RETURN_SPECIALUSE) != 0) {
                /* NOTE: ctx->list is fake - don't use it directly */
                const char *error;
-               struct event *event = mail_storage_mailbox_create_event(
-                       info->ns->list->event, info->ns->list, info->vname);
-               ret = settings_get(event, &mailbox_setting_parser_info, 0,
-                                  &set, &error);
-               event_unref(&event);
+
+               ret = mailbox_name_try_get_settings(info->ns->list, info->vname,
+                                                   &set, &error);
+               if (ret == 0) {
+                       struct event *event = mail_storage_mailbox_create_event(
+                               info->ns->list->event, info->ns->list,
+                               info->vname);
+                       ret = settings_get(event, &mailbox_setting_parser_info, 0,
+                                          &set, &error);
+                       event_unref(&event);
+               }
                if (ret < 0) {
                        mailbox_list_set_critical(info->ns->list, "%s", error);
                        ctx->failed = TRUE;