]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm: Replace mail_storage_service_save_userdb_fields() with mail_storage_service...
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Sat, 7 Jan 2023 20:31:50 +0000 (22:31 +0200)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 20 Nov 2023 12:20:15 +0000 (14:20 +0200)
This is much less kludgy.

src/doveadm/doveadm-auth-server.c
src/doveadm/doveadm-auth.c

index 3c15df7151663e9e776169f27aa7092456b631ee..e8007bbf606239558267838ab393a9d19600e592 100644 (file)
@@ -264,7 +264,6 @@ cmd_user_mail_input(struct mail_storage_service_ctx *storage_service,
        struct mail_storage_service_input service_input;
        struct mail_user *user;
        const char *error, *const *userdb_fields;
-       pool_t pool;
        int ret;
 
        i_zero(&service_input);
@@ -276,13 +275,8 @@ cmd_user_mail_input(struct mail_storage_service_ctx *storage_service,
        service_input.remote_port = input->info.remote_port;
        service_input.debug = input->info.debug;
 
-       pool = pool_alloconly_create("userdb fields", 1024);
-       mail_storage_service_save_userdb_fields(storage_service, pool,
-                                               &userdb_fields);
-
        if ((ret = mail_storage_service_lookup_next(storage_service, &service_input,
                                                    &user, &error)) <= 0) {
-               pool_unref(&pool);
                if (ret < 0)
                        return -1;
                json_ostream_nwritef_string(json_output, "error",
@@ -292,6 +286,7 @@ cmd_user_mail_input(struct mail_storage_service_ctx *storage_service,
        }
 
        if (expand_field == NULL) {
+               userdb_fields = mail_storage_service_user_get_userdb_fields(user->service_user);
                cmd_user_mail_print_fields(input, user,
                        json_output, userdb_fields, show_field);
        } else {
@@ -309,7 +304,6 @@ cmd_user_mail_input(struct mail_storage_service_ctx *storage_service,
        }
 
        mail_user_deinit(&user);
-       pool_unref(&pool);
        return 1;
 }
 
index 9a210f146254066b56be130f61a9e91ee324a540..c00e4fea70ce5084e73571f1dad961c56c396cf0 100644 (file)
@@ -665,7 +665,6 @@ cmd_user_mail_input(struct mail_storage_service_ctx *storage_service,
        struct mail_storage_service_input service_input;
        struct mail_user *user;
        const char *error, *const *userdb_fields;
-       pool_t pool;
        int ret;
 
        i_zero(&service_input);
@@ -677,13 +676,8 @@ cmd_user_mail_input(struct mail_storage_service_ctx *storage_service,
        service_input.remote_port = input->info.remote_port;
        service_input.debug = input->info.debug;
 
-       pool = pool_alloconly_create("userdb fields", 1024);
-       mail_storage_service_save_userdb_fields(storage_service, pool,
-                                               &userdb_fields);
-
        if ((ret = mail_storage_service_lookup_next(storage_service, &service_input,
                                                    &user, &error)) <= 0) {
-               pool_unref(&pool);
                if (ret < 0)
                        return -1;
                fprintf(show_field == NULL && expand_field == NULL ? stdout : stderr,
@@ -692,9 +686,10 @@ cmd_user_mail_input(struct mail_storage_service_ctx *storage_service,
                return 0;
        }
 
-       if (expand_field == NULL)
+       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);
-       else {
+       else {
                string_t *str = t_str_new(128);
                if (var_expand_with_funcs(str, expand_field,
                                          mail_user_var_expand_table(user),
@@ -707,7 +702,6 @@ cmd_user_mail_input(struct mail_storage_service_ctx *storage_service,
        }
 
        mail_user_deinit(&user);
-       pool_unref(&pool);
        return 1;
 }