]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Add mailbox_list.event
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 1 May 2023 21:01:51 +0000 (00:01 +0300)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 20 Nov 2023 12:22:30 +0000 (14:22 +0200)
src/lib-storage/mailbox-list-private.h
src/lib-storage/mailbox-list.c
src/lib-storage/mailbox-list.h
src/lib-storage/test-mailbox-list.c

index 582b94146301793e5caf541e7dab8b4c4ed5270d..3ec35859b11864e20d9cb7de03d47325fdd4fa3e 100644 (file)
@@ -105,6 +105,7 @@ union mailbox_list_module_context {
 
 struct mailbox_list {
        const char *name;
+       struct event *event;
        enum mailbox_list_properties props;
        size_t mailbox_name_max_length;
 
index a8a83568ba7170daa026a0d19b74fe3e1cf6aaa4..a6978cbcd151f73e0174c24c7e73ff1989c61669 100644 (file)
@@ -141,6 +141,8 @@ int mailbox_list_create(const char *driver, struct mail_namespace *ns,
        list = class->v.alloc();
        array_create(&list->module_contexts, list->pool, sizeof(void *), 5);
 
+       list->event = event_create(ns->user->event);
+       event_add_str(list->event, "namespace", ns->set->name);
        list->ns = ns;
        list->mail_set = ns->mail_set;
        list->flags = flags;
@@ -820,7 +822,10 @@ void mailbox_list_destroy(struct mailbox_list **_list)
                i_assert(array_count(&list->error_stack) == 0);
                array_free(&list->error_stack);
        }
+
+       struct event *event = list->event;
        list->v.deinit(list);
+       event_unref(&event);
 }
 
 const char *mailbox_list_get_driver_name(const struct mailbox_list *list)
@@ -845,6 +850,12 @@ mailbox_list_get_namespace(const struct mailbox_list *list)
        return list->ns;
 }
 
+struct event *
+mailbox_list_get_event(const struct mailbox_list *list)
+{
+       return list->event;
+}
+
 static mode_t get_dir_mode(mode_t mode)
 {
        /* add the execute bit if either read or write bit is set */
index 27e8f4655b6577d9a0a0473b304e324460a2bf26..bd22973b3eef29738c43543b6735a847d1e87cf1 100644 (file)
@@ -226,6 +226,8 @@ enum mailbox_list_flags
 mailbox_list_get_flags(const struct mailbox_list *list) ATTR_PURE;
 struct mail_namespace *
 mailbox_list_get_namespace(const struct mailbox_list *list) ATTR_PURE;
+struct event *
+mailbox_list_get_event(const struct mailbox_list *list) ATTR_PURE;
 struct mail_user *
 mailbox_list_get_user(const struct mailbox_list *list) ATTR_PURE;
 /* Get a mail_storage for the given mailbox_list/vname combination. This might
index d24857d18b98882e22f179c087e599dbde94e548..567c0c65f6944a98d385d52943ca53653063f91a 100644 (file)
@@ -35,6 +35,7 @@ static void test_init_list(struct mailbox_list *list_r)
        list_r->ns = t_new(struct mail_namespace, 1);
        list_r->ns->user = t_new(struct mail_user, 1);
        list_r->ns->user->event = event_create(NULL);
+       list_r->event = event_create(list_r->ns->user->event);
 }
 
 static void test_deinit_list(struct mailbox_list *list)
@@ -45,6 +46,7 @@ static void test_deinit_list(struct mailbox_list *list)
                i_assert(array_count(&list->error_stack) == 0);
                array_free(&list->error_stack);
        }
+       event_unref(&list->event);
        event_unref(&list->ns->user->event);
 }