From: Timo Sirainen Date: Thu, 12 Jan 2023 22:05:30 +0000 (+0200) Subject: lib-storage: Remove mail_user.unexpanded_set_parser and related code X-Git-Tag: 2.4.0~2294 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=51965f5e32e13d6eaa795014e2b2976c324393be;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Remove mail_user.unexpanded_set_parser and related code Use mail_storage_service_user.set_parser instead. --- diff --git a/src/lda/main.c b/src/lda/main.c index 0a3f370c46..a25058fe2b 100644 --- a/src/lda/main.c +++ b/src/lda/main.c @@ -155,8 +155,9 @@ lda_raw_mail_open(struct mail_deliver_input *dinput, const char *path) struct mail_storage_service_ctx *storage_service = mail_storage_service_user_get_service_ctx(dinput->rcpt_user->service_user); - raw_mail_user = raw_storage_create_from_set(storage_service, - dinput->rcpt_user->unexpanded_set_parser); + struct setting_parser_context *set_parser = + mail_storage_service_user_get_settings_parser(dinput->rcpt_user->service_user); + raw_mail_user = raw_storage_create_from_set(storage_service, set_parser); mail_from = (dinput->mail_from != NULL ? dinput->mail_from : &default_envelope_sender); diff --git a/src/lib-storage/index/shared/shared-storage.c b/src/lib-storage/index/shared/shared-storage.c index 3e0337d565..a310866676 100644 --- a/src/lib-storage/index/shared/shared-storage.c +++ b/src/lib-storage/index/shared/shared-storage.c @@ -258,10 +258,12 @@ int shared_storage_get_namespace(struct mail_namespace **_ns, mail_storage_service_user_get_service_ctx(user->service_user); struct event *service_user_event = mail_storage_service_user_get_event(user->service_user); + struct setting_parser_context *service_user_set_parser = + mail_storage_service_user_get_settings_parser(user->service_user); const struct mail_storage_service_input input = { .event_parent = event_get_parent(service_user_event), .username = userdomain, - .unexpanded_set_parser = user->unexpanded_set_parser, + .unexpanded_set_parser = service_user_set_parser, .session_id = user->session_id, .autocreated = TRUE, .no_userdb_lookup = TRUE, diff --git a/src/lib-storage/mail-storage-service.c b/src/lib-storage/mail-storage-service.c index 8beed2cb86..4db2db7181 100644 --- a/src/lib-storage/mail-storage-service.c +++ b/src/lib-storage/mail-storage-service.c @@ -673,7 +673,7 @@ mail_storage_service_init_post(struct mail_storage_service_ctx *ctx, /* NOTE: if more user initialization is added, add it also to mail_user_dup() */ - mail_user = mail_user_alloc_nodup_set(user, user->set_parser); + mail_user = mail_user_alloc(user); *mail_user_r = mail_user; if (user->input.autocreated) mail_user->autocreated = TRUE; diff --git a/src/lib-storage/mail-user.c b/src/lib-storage/mail-user.c index 751cf92ba7..25db99c5f8 100644 --- a/src/lib-storage/mail-user.c +++ b/src/lib-storage/mail-user.c @@ -61,29 +61,28 @@ void mail_user_add_event_fields(struct mail_user *user) } } -static struct mail_user * -mail_user_alloc_int(struct mail_storage_service_user *service_user, - struct setting_parser_context *unexpanded_set_parser, - pool_t pool) +struct mail_user * +mail_user_alloc(struct mail_storage_service_user *service_user) { struct mail_user *user; struct event *parent_event = mail_storage_service_user_get_event(service_user); const char *username = mail_storage_service_user_get_username(service_user); + struct setting_parser_context *service_user_set_parser = + mail_storage_service_user_get_settings_parser(service_user); i_assert(*username != '\0'); + pool_t pool = pool_alloconly_create(MEMPOOL_GROWING"mail user", 16*1024); user = p_new(pool, struct mail_user, 1); user->pool = pool; user->refcount = 1; user->service_user = service_user; mail_storage_service_user_ref(service_user); user->username = p_strdup(pool, username); - user->unexpanded_set_parser = unexpanded_set_parser; - settings_parser_ref(user->unexpanded_set_parser); - user->set_parser = settings_parser_dup(unexpanded_set_parser, pool); + user->set_parser = settings_parser_dup(service_user_set_parser, pool); user->unexpanded_set = - settings_parser_get_root_set(unexpanded_set_parser, + settings_parser_get_root_set(service_user_set_parser, &mail_user_setting_parser_info); user->set = settings_parser_get_root_set(user->set_parser, &mail_user_setting_parser_info); @@ -100,30 +99,6 @@ mail_user_alloc_int(struct mail_storage_service_user *service_user, return user; } -struct mail_user * -mail_user_alloc_nodup_set(struct mail_storage_service_user *service_user, - struct setting_parser_context *unexpanded_set_parser) -{ - pool_t pool; - - pool = pool_alloconly_create(MEMPOOL_GROWING"mail user", 16*1024); - return mail_user_alloc_int(service_user, unexpanded_set_parser, pool); -} - -struct mail_user *mail_user_alloc(struct mail_storage_service_user *service_user, - struct setting_parser_context *unexpanded_set_parser) -{ - pool_t pool; - - pool = pool_alloconly_create(MEMPOOL_GROWING"mail user", 16*1024); - struct setting_parser_context *set_parser = - settings_parser_dup(unexpanded_set_parser, pool); - struct mail_user *user = - mail_user_alloc_int(service_user, set_parser, pool); - settings_parser_unref(&set_parser); - return user; -} - static void mail_user_expand_plugins_envs(struct mail_user *user) { @@ -278,7 +253,6 @@ void mail_user_unref(struct mail_user **_user) user->v.deinit(user); } T_END; settings_parser_unref(&user->set_parser); - settings_parser_unref(&user->unexpanded_set_parser); event_unref(&user->event); i_assert(user->refcount == 1); pool_unref(&user->pool); @@ -780,8 +754,7 @@ struct mail_user *mail_user_dup(struct mail_user *user) { struct mail_user *user2; - user2 = mail_user_alloc(user->service_user, - user->unexpanded_set_parser); + user2 = mail_user_alloc(user->service_user); if (user->_home != NULL) mail_user_set_home(user2, user->_home); mail_user_set_vars(user2, user->service, &user->conn); diff --git a/src/lib-storage/mail-user.h b/src/lib-storage/mail-user.h index cd7e03ded2..261ee47197 100644 --- a/src/lib-storage/mail-user.h +++ b/src/lib-storage/mail-user.h @@ -57,7 +57,6 @@ struct mail_user { This could be set by plugins that need to fail the initialization. */ const char *error; - struct setting_parser_context *unexpanded_set_parser; struct setting_parser_context *set_parser; const struct mail_user_settings *unexpanded_set; struct mail_user_settings *set; @@ -126,11 +125,7 @@ extern struct auth_master_connection *mail_user_auth_master_conn; extern const struct var_expand_func_table *mail_user_var_expand_func_table; struct mail_user * -mail_user_alloc(struct mail_storage_service_user *service_user, - struct setting_parser_context *unexpanded_set_parser); -struct mail_user * -mail_user_alloc_nodup_set(struct mail_storage_service_user *service_user, - struct setting_parser_context *set_parser); +mail_user_alloc(struct mail_storage_service_user *service_user); /* Returns -1 if settings were invalid. */ int mail_user_init(struct mail_user *user, const char **error_r);