From: Timo Sirainen Date: Thu, 12 Jan 2023 16:02:31 +0000 (+0200) Subject: lib-storage: mail_user_alloc*() - Require service_user parameter X-Git-Tag: 2.4.0~3107 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b7712b0d920f5c69567f7e22be0d2251761807c9;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: mail_user_alloc*() - Require service_user parameter --- diff --git a/src/lib-storage/mail-storage-service.c b/src/lib-storage/mail-storage-service.c index f1f5358781..d366439c23 100644 --- a/src/lib-storage/mail-storage-service.c +++ b/src/lib-storage/mail-storage-service.c @@ -686,13 +686,10 @@ 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->event, user->input.username, - user->set_parser); + mail_user = mail_user_alloc_nodup_set(user, user->set_parser); *mail_user_r = mail_user; - mail_user->_service_user = user; if (user->input.autocreated) mail_user->autocreated = TRUE; - mail_storage_service_user_ref(user); if (!user->input.no_userdb_lookup || user->home_from_userdb) { /* userdb lookup is done. The (lack of) home directory is now known. */ diff --git a/src/lib-storage/mail-user.c b/src/lib-storage/mail-user.c index 2a4767a8c8..a93fc39fbb 100644 --- a/src/lib-storage/mail-user.c +++ b/src/lib-storage/mail-user.c @@ -49,19 +49,22 @@ static void mail_user_deinit_pre_base(struct mail_user *user ATTR_UNUSED) } static struct mail_user * -mail_user_alloc_int(struct event *parent_event, - const char *username, +mail_user_alloc_int(struct mail_storage_service_user *service_user, struct setting_parser_context *unexpanded_set_parser, pool_t pool) { struct mail_user *user; - - i_assert(username != NULL); + struct event *parent_event = + mail_storage_service_user_get_event(service_user); + const char *username = + mail_storage_service_user_get_username(service_user); i_assert(*username != '\0'); 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); @@ -85,19 +88,16 @@ mail_user_alloc_int(struct event *parent_event, } struct mail_user * -mail_user_alloc_nodup_set(struct event *parent_event, - const char *username, +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(parent_event, username, - unexpanded_set_parser, pool); + return mail_user_alloc_int(service_user, unexpanded_set_parser, pool); } -struct mail_user *mail_user_alloc(struct event *parent_event, - const char *username, +struct mail_user *mail_user_alloc(struct mail_storage_service_user *service_user, struct setting_parser_context *unexpanded_set_parser) { pool_t pool; @@ -106,7 +106,7 @@ struct mail_user *mail_user_alloc(struct event *parent_event, struct setting_parser_context *set_parser = settings_parser_dup(unexpanded_set_parser, pool); struct mail_user *user = - mail_user_alloc_int(parent_event, username, set_parser, pool); + mail_user_alloc_int(service_user, set_parser, pool); settings_parser_unref(&set_parser); return user; } @@ -770,12 +770,8 @@ struct mail_user *mail_user_dup(struct mail_user *user) { struct mail_user *user2; - user2 = mail_user_alloc(event_get_parent(user->event), user->username, + user2 = mail_user_alloc(user->_service_user, user->unexpanded_set_parser); - if (user2->_service_user != NULL) { - user2->_service_user = user->_service_user; - mail_storage_service_user_ref(user2->_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 c65d52c8e7..e72dc4eca7 100644 --- a/src/lib-storage/mail-user.h +++ b/src/lib-storage/mail-user.h @@ -127,12 +127,11 @@ extern struct mail_user_module_register mail_user_module_register; 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 event *parent_event, - const char *username, - struct setting_parser_context *unexpanded_set_parser); struct mail_user * -mail_user_alloc_nodup_set(struct event *parent_event, - const char *username, +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); /* Returns -1 if settings were invalid. */ int mail_user_init(struct mail_user *user, const char **error_r);