From: Timo Sirainen Date: Sat, 8 Mar 2025 08:32:05 +0000 (+0200) Subject: doveadm auth: Replace mail_user_set_get_storage_set() with direct settings lookup X-Git-Tag: 2.4.1~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8bde6147f970f2b68180950d3120c66cf1611916;p=thirdparty%2Fdovecot%2Fcore.git doveadm auth: Replace mail_user_set_get_storage_set() with direct settings lookup --- diff --git a/src/doveadm/doveadm-auth-server.c b/src/doveadm/doveadm-auth-server.c index 81d012490f..baed4ab41d 100644 --- a/src/doveadm/doveadm-auth-server.c +++ b/src/doveadm/doveadm-auth-server.c @@ -6,6 +6,7 @@ #include "str.h" #include "var-expand.h" #include "wildcard-match.h" +#include "settings.h" #include "settings-parser.h" #include "master-service.h" #include "master-service-settings.h" @@ -212,11 +213,11 @@ static void cmd_user_mail_input_field(struct json_ostream *json_output, static void cmd_user_mail_print_fields(const struct authtest_input *input, struct mail_user *user, + const struct mail_storage_settings *mail_set, struct json_ostream *json_output, const char *const *userdb_fields, const char *show_field) { - const struct mail_storage_settings *mail_set; const char *key, *value; unsigned int i; @@ -230,8 +231,6 @@ cmd_user_mail_print_fields(const struct authtest_input *input, user->set->mail_gid, show_field); cmd_user_mail_input_field(json_output, "home", user->set->mail_home, show_field); - - mail_set = mail_user_set_get_storage_set(user); cmd_user_mail_input_field(json_output, "mail_path", mail_set->mail_path, show_field); @@ -264,6 +263,7 @@ cmd_user_mail_input(struct mail_storage_service_ctx *storage_service, { struct mail_storage_service_input service_input; struct mail_user *user; + const struct mail_storage_settings *mail_set; const char *error, *const *userdb_fields; int ret; @@ -288,10 +288,16 @@ cmd_user_mail_input(struct mail_storage_service_ctx *storage_service, input->username); return 0; } + if (settings_get(user->event, &mail_storage_setting_parser_info, 0, + &mail_set, &error) < 0) { + json_ostream_nwrite_string(json_output, "error", error); + mail_user_deinit(&user); + return -1; + } if (expand_field == NULL) { userdb_fields = mail_storage_service_user_get_userdb_fields(user->service_user); - cmd_user_mail_print_fields(input, user, + cmd_user_mail_print_fields(input, user, mail_set, json_output, userdb_fields, show_field); } else { string_t *str = t_str_new(128); @@ -306,6 +312,7 @@ cmd_user_mail_input(struct mail_storage_service_ctx *storage_service, } } + settings_free(mail_set); mail_user_deinit(&user); return 1; } diff --git a/src/doveadm/doveadm-auth.c b/src/doveadm/doveadm-auth.c index c2ba67be0b..939066c81d 100644 --- a/src/doveadm/doveadm-auth.c +++ b/src/doveadm/doveadm-auth.c @@ -11,6 +11,7 @@ #include "var-expand.h" #include "randgen.h" #include "dsasl-client.h" +#include "settings.h" #include "settings-parser.h" #include "master-service.h" #include "master-service-settings.h" @@ -692,10 +693,10 @@ static void cmd_user_mail_input_field(const char *key, const char *value, static void cmd_user_mail_print_fields(const struct authtest_input *input, struct mail_user *user, + const struct mail_storage_settings *mail_set, const char *const *userdb_fields, const char *show_field) { - const struct mail_storage_settings *mail_set; const char *key, *value; unsigned int i; @@ -704,8 +705,6 @@ cmd_user_mail_print_fields(const struct authtest_input *input, cmd_user_mail_input_field("uid", user->set->mail_uid, show_field); cmd_user_mail_input_field("gid", user->set->mail_gid, show_field); cmd_user_mail_input_field("home", user->set->mail_home, show_field); - - mail_set = mail_user_set_get_storage_set(user); cmd_user_mail_input_field("mail_path", mail_set->mail_path, show_field); if (userdb_fields != NULL) { @@ -734,6 +733,7 @@ cmd_user_mail_input(struct mail_storage_service_ctx *storage_service, { struct mail_storage_service_input service_input; struct mail_user *user; + const struct mail_storage_settings *mail_set; const char *error, *const *userdb_fields; int ret; @@ -757,10 +757,17 @@ cmd_user_mail_input(struct mail_storage_service_ctx *storage_service, input->username); return 0; } + if (settings_get(user->event, &mail_storage_setting_parser_info, 0, + &mail_set, &error) < 0) { + e_error(event, "%s", error); + mail_user_deinit(&user); + return -1; + } if (expand_field == NULL) { userdb_fields = mail_storage_service_user_get_userdb_fields(user->service_user); - cmd_user_mail_print_fields(input, user, userdb_fields, show_field); + cmd_user_mail_print_fields(input, user, mail_set, + userdb_fields, show_field); } else { string_t *str = t_str_new(128); const struct var_expand_params *params = @@ -772,6 +779,7 @@ cmd_user_mail_input(struct mail_storage_service_ctx *storage_service, } } + settings_free(mail_set); mail_user_deinit(&user); return 1; }