From 8415478ae794e051c7f9bb038862600c68009e99 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 23 Jan 2025 23:51:55 +0200 Subject: [PATCH] global: Remove SETTINGS_EVENT_MAILBOX_NAME_WITH[OUT]_PREFIX macros and special handling The mailbox settings are now looked up with settings_filter_names, so there's no need to do this kind of special translations. --- src/config/config-dump-full.c | 2 -- src/lib-settings/settings.c | 9 --------- src/lib-settings/settings.h | 7 ------- src/lib-storage/list/mailbox-list-iter.c | 2 +- src/lib-storage/mail-autoexpunge.c | 2 +- src/lib-storage/mail-storage-settings.c | 3 +-- src/lib-storage/mail-storage.c | 7 ++----- src/plugins/trash/trash-plugin.c | 10 ++++------ 8 files changed, 9 insertions(+), 33 deletions(-) diff --git a/src/config/config-dump-full.c b/src/config/config-dump-full.c index 3ad3ae0db2..a56ed9a5ac 100644 --- a/src/config/config-dump-full.c +++ b/src/config/config-dump-full.c @@ -148,8 +148,6 @@ config_dump_full_append_filter_query(string_t *str, const char *p = strchr(filter->filter_name, '/'); i_assert(p != NULL); const char *filter_key = t_strdup_until(filter->filter_name, p); - if (strcmp(filter_key, SETTINGS_EVENT_MAILBOX_NAME_WITH_PREFIX) == 0) - filter_key = SETTINGS_EVENT_MAILBOX_NAME_WITHOUT_PREFIX; /* the filter_name is used by settings_get_filter() for finding a specific filter without wildcards messing up the lookups. */ diff --git a/src/lib-settings/settings.c b/src/lib-settings/settings.c index 1676180496..d37e411d0f 100644 --- a/src/lib-settings/settings.c +++ b/src/lib-settings/settings.c @@ -1518,11 +1518,6 @@ settings_key_part_find(struct settings_apply_ctx *ctx, const char **key, if (last_filter_value != NULL) { i_assert(last_filter_key != NULL); const char *key_prefix = last_filter_key; - /* last_filter_key was already converted to "mailbox_subname". - But for setting name auto-prefixing it needs to be "mailbox" - again. */ - if (strcmp(key_prefix, SETTINGS_EVENT_MAILBOX_NAME_WITHOUT_PREFIX) == 0) - key_prefix = SETTINGS_EVENT_MAILBOX_NAME_WITH_PREFIX; /* Try filter/name/key -> filter_name_key, and fallback to filter_key. Do this before the non-prefixed check, so e.g. inet_listener/imap/ssl won't try to change the global ssl @@ -1651,8 +1646,6 @@ settings_override_filter_match(struct settings_apply_ctx *ctx, return -1; } last_filter_key = part; - if (strcmp(last_filter_key, SETTINGS_EVENT_MAILBOX_NAME_WITH_PREFIX) == 0) - last_filter_key = SETTINGS_EVENT_MAILBOX_NAME_WITHOUT_PREFIX; last_filter_value = t_strdup_until(value, p); str_printfa(filter_string, SETTINGS_EVENT_FILTER_NAME"=\"%s/%s\"", last_filter_key, wildcard_str_escape(settings_section_escape(last_filter_value))); @@ -1798,8 +1791,6 @@ settings_instance_override_add_default(struct settings_apply_ctx *ctx, filter_key++; else filter_key = array_set->orig_key; - if (strcmp(filter_key, SETTINGS_EVENT_MAILBOX_NAME_WITH_PREFIX) == 0) - filter_key = SETTINGS_EVENT_MAILBOX_NAME_WITHOUT_PREFIX; /* Build the final event filter. */ const char *filter_string = t_strdup_printf( diff --git a/src/lib-settings/settings.h b/src/lib-settings/settings.h index 01fef2b496..10adac7557 100644 --- a/src/lib-settings/settings.h +++ b/src/lib-settings/settings.h @@ -87,13 +87,6 @@ struct settings_get_params { event_set_ptr(event, SETTINGS_EVENT_FILTER_NAME, "auth_policy"); */ #define SETTINGS_EVENT_FILTER_NAME "settings_filter_name" -/* The "mailbox" event field contains the full mailbox with namespace prefix. - However, for settings we need to use the mailbox name without the namespace - prefix. Internally convert the "mailbox" named filters to "mailbox_subname", - so the matching works for the event. */ -#define SETTINGS_EVENT_MAILBOX_NAME_WITH_PREFIX "mailbox" -#define SETTINGS_EVENT_MAILBOX_NAME_WITHOUT_PREFIX "mailbox_subname" - /* Set struct var_expand_params to be used for settings expansion. The struct is expected to be accessible until the event is freed or the params is removed from the event. Usage: diff --git a/src/lib-storage/list/mailbox-list-iter.c b/src/lib-storage/list/mailbox-list-iter.c index b472cd81e8..e15a79f3f2 100644 --- a/src/lib-storage/list/mailbox-list-iter.c +++ b/src/lib-storage/list/mailbox-list-iter.c @@ -124,7 +124,7 @@ mailbox_list_iter_init_autocreate(struct mailbox_list_iterate_context *ctx) p_array_init(&actx->all_ns_box_sets, ctx->pool, 16); for (i = 0; i < count; i++) { if (settings_get_filter(ns->list->event, - SETTINGS_EVENT_MAILBOX_NAME_WITHOUT_PREFIX, box_names[i], + "mailbox", box_names[i], &mailbox_setting_parser_info, 0, &box_set, &error) < 0) { mailbox_list_set_critical(ctx->list, "%s", error); diff --git a/src/lib-storage/mail-autoexpunge.c b/src/lib-storage/mail-autoexpunge.c index ca38682a4e..4f36d607fc 100644 --- a/src/lib-storage/mail-autoexpunge.c +++ b/src/lib-storage/mail-autoexpunge.c @@ -246,7 +246,7 @@ mail_namespace_autoexpunge(struct mail_namespace *ns, struct file_lock **lock, array_foreach_elem(&ns->set->mailboxes, box_name) { if (settings_get_filter(mailbox_list_get_event(ns->list), - SETTINGS_EVENT_MAILBOX_NAME_WITHOUT_PREFIX, box_name, + "mailbox", box_name, &mailbox_setting_parser_info, 0, &box_set, &error) < 0) { e_error(mailbox_list_get_event(ns->list), "%s", error); diff --git a/src/lib-storage/mail-storage-settings.c b/src/lib-storage/mail-storage-settings.c index 7e2f9ba87c..d77e03925e 100644 --- a/src/lib-storage/mail-storage-settings.c +++ b/src/lib-storage/mail-storage-settings.c @@ -793,8 +793,7 @@ namespace_parse_mailboxes(struct event *event, pool_t pool, SETTINGS_EVENT_NAMESPACE_NAME, ns->name); array_foreach_elem(&ns->mailboxes, box_name) { if (settings_get_filter(event, - SETTINGS_EVENT_MAILBOX_NAME_WITHOUT_PREFIX, - box_name, + "mailbox", box_name, &mailbox_setting_parser_info, 0, &box_set, &error) < 0) { *error_r = t_strdup_printf( diff --git a/src/lib-storage/mail-storage.c b/src/lib-storage/mail-storage.c index fa2c7ae170..e126b33663 100644 --- a/src/lib-storage/mail-storage.c +++ b/src/lib-storage/mail-storage.c @@ -3480,8 +3480,7 @@ static void mailbox_settings_filters_add(struct event *event, const char *filter_name = array_idx_elem(&list->ns->set->mailboxes, i); settings_event_add_list_filter_name(event, - SETTINGS_EVENT_MAILBOX_NAME_WITHOUT_PREFIX, - filter_name); + "mailbox", filter_name); } } @@ -3493,9 +3492,7 @@ mail_storage_mailbox_create_event(struct event *parent, event_add_category(event, &event_category_mailbox); mailbox_settings_filters_add(event, list, vname); - event_add_str(event, SETTINGS_EVENT_MAILBOX_NAME_WITH_PREFIX, vname); - event_add_str(event, SETTINGS_EVENT_MAILBOX_NAME_WITHOUT_PREFIX, - mailbox_get_name_without_prefix(list->ns, vname)); + event_add_str(event, "mailbox", vname); event_add_str(event, SETTINGS_EVENT_NAMESPACE_NAME, list->ns->set->name); settings_event_add_list_filter_name(event, SETTINGS_EVENT_NAMESPACE_NAME, list->ns->set->name); diff --git a/src/plugins/trash/trash-plugin.c b/src/plugins/trash/trash-plugin.c index ab520bf002..18d1454768 100644 --- a/src/plugins/trash/trash-plugin.c +++ b/src/plugins/trash/trash-plugin.c @@ -310,9 +310,8 @@ static int trash_try_mailbox(struct mail_namespace *ns, const char *box_name, { struct trash_user *tuser = TRASH_USER_CONTEXT_REQUIRE(ns->user); const struct trash_settings *trash_set; - if (settings_try_get_filter(ns->list->event, - SETTINGS_EVENT_MAILBOX_NAME_WITHOUT_PREFIX, - box_name, &trash_setting_parser_info, 0, + if (settings_try_get_filter(ns->list->event, "mailbox", box_name, + &trash_setting_parser_info, 0, &trash_set, error_r) < 0) return -1; unsigned int trash_priority = trash_set->trash_priority; @@ -322,9 +321,8 @@ static int trash_try_mailbox(struct mail_namespace *ns, const char *box_name, return 0; const struct mailbox_settings *box_set; - if (settings_try_get_filter(ns->list->event, - SETTINGS_EVENT_MAILBOX_NAME_WITHOUT_PREFIX, - box_name, &mailbox_setting_parser_info, 0, + if (settings_try_get_filter(ns->list->event, "mailbox", box_name, + &mailbox_setting_parser_info, 0, &box_set, error_r) < 0) return -1; -- 2.47.3