struct mail_namespace_settings *ns,
const char **error_r)
{
- struct mailbox_settings *box_set;
+ const struct mailbox_settings *box_set;
const char *box_name, *error;
int ret = 0;
if (array_is_empty(&ns->mailboxes))
return 0;
- p_array_init(&ns->parsed_mailbox_names, pool,
+ p_array_init(&ns->parsed_mailboxes, pool,
array_count(&ns->mailboxes));
event = event_create(event);
event_add_str(event, SETTINGS_EVENT_NAMESPACE_NAME, ns->name);
ret = -1;
break;
}
- const char *name_dup = p_strdup(pool, box_set->name);
- array_push_back(&ns->parsed_mailbox_names, &name_dup);
+ array_push_back(&ns->parsed_mailboxes, &box_set);
+ pool_add_external_ref(pool, box_set->pool);
bool have_special_use = array_not_empty(&box_set->special_use);
settings_free(box_set);
if (have_special_use)
/* List of mailbox filter names */
ARRAY_TYPE(const_string) mailboxes;
- /* mailbox_name of each mailbox. This is used for matching mailbox
- settings for mailbox names. */
- ARRAY_TYPE(const_string) parsed_mailbox_names;
+ /* mailbox_settings of each configured mailbox in the namespace. */
+ ARRAY(const struct mailbox_settings *) parsed_mailboxes;
bool parsed_have_special_use_mailboxes;
};
const char *vname_without_prefix =
mailbox_get_name_without_prefix(list->ns, vname);
unsigned int i, count;
- const char *const *mailbox_names =
- array_get(&list->ns->set->parsed_mailbox_names, &count);
+ const struct mailbox_settings *const *mailboxes =
+ array_get(&list->ns->set->parsed_mailboxes, &count);
for (i = 0; i < count; i++) {
- if (!wildcard_match(vname_without_prefix, mailbox_names[i]))
+ if (!wildcard_match(vname_without_prefix, mailboxes[i]->name))
continue;
const char *filter_name =