From: Timo Sirainen Date: Mon, 11 Nov 2024 13:32:15 +0000 (+0200) Subject: lib-storage: Add mail_storage_service_user.module_contexts X-Git-Tag: 2.4.1~549 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c0162d81140b6a3296623b02afa75d543766c42a;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Add mail_storage_service_user.module_contexts This allows plugins to add plugin-specific fields to mail_storage_service_user. --- diff --git a/src/lib-storage/mail-storage-service.c b/src/lib-storage/mail-storage-service.c index 5699e78950..2bf2356c45 100644 --- a/src/lib-storage/mail-storage-service.c +++ b/src/lib-storage/mail-storage-service.c @@ -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; diff --git a/src/lib-storage/mail-storage-service.h b/src/lib-storage/mail-storage-service.h index 60f2d2b6ea..07f3b901d6 100644 --- a/src/lib-storage/mail-storage-service.h +++ b/src/lib-storage/mail-storage-service.h @@ -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 *