From 4bddd67fc623d27da6d8a3cf0a5ec0b5714d15f4 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 6 Mar 2025 14:30:58 +0200 Subject: [PATCH] lib-storage: Remove mail_user.have_special_use_mailboxes This avoids having to go through all mailbox settings in all namespaces when initializing user. --- src/lib-storage/mail-storage-settings.c | 39 ------------------------- src/lib-storage/mail-storage-settings.h | 4 --- src/lib-storage/mail-user.c | 3 +- src/lib-storage/mail-user.h | 2 -- 4 files changed, 1 insertion(+), 47 deletions(-) diff --git a/src/lib-storage/mail-storage-settings.c b/src/lib-storage/mail-storage-settings.c index 2dcba3dc47..666af31255 100644 --- a/src/lib-storage/mail-storage-settings.c +++ b/src/lib-storage/mail-storage-settings.c @@ -458,46 +458,7 @@ static bool mail_cache_fields_parse(const char *key, } return TRUE; } -/* */ - -bool mail_user_settings_update_special_use(struct mail_user *user, - const struct mail_storage_settings *set, - const char **error_r) -{ - const struct mail_namespace_settings *ns; - const char *ns_name, *error; - - /* Check if there are any global mailbox { .. } settings */ - if (settings_get(user->event, &mail_namespace_setting_parser_info, - SETTINGS_GET_FLAG_FAKE_EXPAND, &ns, error_r) < 0) - return FALSE; - if (ns->parsed_have_special_use_mailboxes && !ns->disabled) - user->have_special_use_mailboxes = TRUE; - settings_free(ns); - - /* Check mailbox { .. } settings inside namespace { .. } */ - if (!array_is_created(&set->namespaces) || user->have_special_use_mailboxes) - return TRUE; - - array_foreach_elem(&set->namespaces, ns_name) { - if (settings_get_filter(user->event, "namespace", ns_name, - &mail_namespace_setting_parser_info, - SETTINGS_GET_FLAG_FAKE_EXPAND, - &ns, &error) < 0) { - *error_r = t_strdup_printf( - "Failed to get namespace %s: %s", - ns_name, error); - return FALSE; - } - - if (ns->parsed_have_special_use_mailboxes && !ns->disabled) - user->have_special_use_mailboxes = TRUE; - settings_free(ns); - } - return TRUE; -} -/* */ static bool mailbox_list_get_path_setting(const char *key, const char **value, pool_t pool, enum mailbox_list_path_type *type_r) diff --git a/src/lib-storage/mail-storage-settings.h b/src/lib-storage/mail-storage-settings.h index 9193207920..b212fdfbe5 100644 --- a/src/lib-storage/mail-storage-settings.h +++ b/src/lib-storage/mail-storage-settings.h @@ -218,8 +218,4 @@ const char * mailbox_settings_get_vname(pool_t pool, const struct mail_namespace *ns, const struct mailbox_settings *set); -bool mail_user_settings_update_special_use(struct mail_user *user, - const struct mail_storage_settings *set, - const char **error_r); - #endif diff --git a/src/lib-storage/mail-user.c b/src/lib-storage/mail-user.c index 30f19320c5..b6735b8bb5 100644 --- a/src/lib-storage/mail-user.c +++ b/src/lib-storage/mail-user.c @@ -112,8 +112,7 @@ int mail_user_init(struct mail_user *user, const char **error_r) i_assert(!user->initialized); if (settings_get(user->event, &mail_storage_setting_parser_info, 0, - &user->_mail_set, &error) < 0 || - !mail_user_settings_update_special_use(user, user->_mail_set, &error)) + &user->_mail_set, &error) < 0) user->error = p_strdup(user->pool, error); if (user->error == NULL) { diff --git a/src/lib-storage/mail-user.h b/src/lib-storage/mail-user.h index 13955076c3..06fe118f48 100644 --- a/src/lib-storage/mail-user.h +++ b/src/lib-storage/mail-user.h @@ -109,8 +109,6 @@ struct mail_user { bool stats_enabled:1; /* This session was restored (e.g. IMAP unhibernation) */ bool session_restored:1; - /* TRUE if any mailboxes have special_use flags */ - bool have_special_use_mailboxes; }; struct mail_user_module_register { -- 2.47.3