]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Add mail_storage_service_user.module_contexts
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 11 Nov 2024 13:32:15 +0000 (15:32 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:40:00 +0000 (10:40 +0200)
This allows plugins to add plugin-specific fields to
mail_storage_service_user.

src/lib-storage/mail-storage-service.c
src/lib-storage/mail-storage-service.h

index 5699e7895037731adb44ce07d0ab49ad60a720d2..2bf2356c4587a9cab3433d8028d833a6aa629ffd 100644 (file)
@@ -60,6 +60,8 @@ struct mail_storage_service_init_var_expand_ctx {
        struct mail_storage_service_user *user;
 };
 
+struct mail_storage_service_user_module_register
+       mail_storage_service_user_module_register = { 0 };
 struct module *mail_storage_service_modules = NULL;
 
 static void set_keyvalue(struct mail_storage_service_user *user,
@@ -1169,6 +1171,7 @@ mail_storage_service_lookup_real(struct mail_storage_service_ctx *ctx,
        user->event = event;
        user->input.session_create_time = input->session_create_time;
        user->flags = flags;
+       p_array_init(&user->module_contexts, user->pool, 5);
 
        user->set_instance = set_instance;
        user->user_set = user_set;
index 60f2d2b6ead6c733911aa6479604e2382a6803e8..07f3b901d6de5410214f0e668cef9754742752db 100644 (file)
@@ -108,12 +108,24 @@ struct mail_storage_service_user {
 
        unsigned int session_id_counter;
 
+       /* Module-specific contexts. See mail_storage_module_id. */
+       ARRAY(union mail_storage_service_user_module_context *) module_contexts;
+
        bool anonymous:1;
        bool admin:1;
        bool master_service_user_set:1;
        bool home_from_userdb:1;
 };
 
+struct mail_storage_service_user_module_register {
+       unsigned int id;
+};
+
+union mail_storage_service_user_module_context {
+       struct mail_storage_service_user_module_register *reg;
+};
+extern struct mail_storage_service_user_module_register
+       mail_storage_service_user_module_register;
 extern struct module *mail_storage_service_modules;
 
 struct mail_storage_service_ctx *