]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage, global: Move settings expansion out of mail_user_init()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Fri, 20 Jan 2023 20:15:22 +0000 (22:15 +0200)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 20 Nov 2023 12:20:55 +0000 (14:20 +0200)
master_service_settings_parser_get() calls can now decide whether to expand
settings or not.

12 files changed:
src/imap-urlauth/imap-urlauth-worker.c
src/imap/main.c
src/lda/main.c
src/lib-storage/index/dbox-multi/mdbox-storage.c
src/lib-storage/index/imapc/imapc-storage.c
src/lib-storage/index/maildir/maildir-storage.c
src/lib-storage/index/mbox/mbox-storage.c
src/lib-storage/index/pop3c/pop3c-storage.c
src/lib-storage/mail-user.c
src/lmtp/lmtp-local.c
src/pop3/main.c
src/submission/main.c

index dbe3dd23e69ece7a7e289f80abfd7acf16274b91..d0c815914104bed5232c9e1727a1fec1d3bab9da 100644 (file)
@@ -561,8 +561,7 @@ client_handle_user_command(struct client *client, const char *cmd,
 
        if (master_service_settings_parser_get(client->event,
                        mail_user->set_parser,
-                       &imap_urlauth_worker_setting_parser_info,
-                       MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND,
+                       &imap_urlauth_worker_setting_parser_info, 0,
                        &set, &error) < 0) {
                e_error(client->event, "user %s: %s", input.username, error);
                client_abort(client, "Session aborted: Failed to get settings");
index 53398aa240dabd9e2106747f1913e0d2f3069556..95ccc3e6878dcadf3bf67e1540e306b46fb742b2 100644 (file)
@@ -282,15 +282,11 @@ int client_create_from_input(const struct mail_storage_service_input *input,
        restrict_access_allow_coredumps(TRUE);
 
        if (master_service_settings_parser_get(mail_user->event,
-                       mail_user->set_parser,
-                       &smtp_submit_setting_parser_info,
-                       MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND,
-                       &smtp_set, error_r) < 0 ||
+                       mail_user->set_parser, &smtp_submit_setting_parser_info,
+                       0, &smtp_set, error_r) < 0 ||
           master_service_settings_parser_get(mail_user->event,
-                       mail_user->set_parser,
-                       &imap_setting_parser_info,
-                       MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND,
-                       &imap_set, error_r) < 0) {
+                       mail_user->set_parser, &imap_setting_parser_info,
+                       0, &imap_set, error_r) < 0) {
                master_service_settings_free(smtp_set);
                mail_user_deinit(&mail_user);
                event_unref(&event);
index a25058fe2ba7acc87d2919c71bd43f0d82155e39..b0c89c96096de8e708efcaaebdb35de11556c780 100644 (file)
@@ -291,13 +291,12 @@ lda_deliver(struct mail_deliver_input *dinput,
        int ret;
 
        if (master_service_settings_parser_get(dinput->rcpt_user->event,
-                       dinput->rcpt_user->set_parser, &lda_setting_parser_info,
-                       MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND,
+                       dinput->rcpt_user->set_parser,
+                       &lda_setting_parser_info, 0,
                        &dinput->set, &error) < 0 ||
            master_service_settings_parser_get(dinput->rcpt_user->event,
                        dinput->rcpt_user->set_parser,
-                       &smtp_submit_setting_parser_info,
-                       MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND,
+                       &smtp_submit_setting_parser_info, 0,
                        &dinput->smtp_set, &error) < 0)
                i_fatal("%s", error);
 
index 8bcdb00f4b79a51f0ea3b986dcb36b4468c35a81..75a59992089e5c085449b407e4a02bf7abad87e6 100644 (file)
@@ -49,8 +49,7 @@ int mdbox_storage_create(struct mail_storage *_storage,
 
        if (master_service_settings_parser_get(_storage->event,
                        _storage->user->set_parser,
-                       mdbox_get_setting_parser_info(),
-                       MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND,
+                       mdbox_get_setting_parser_info(), 0,
                        &storage->set, error_r) < 0)
                return -1;
 
index 489b921745480356f4c588a48ede72149275f603..8d8b87da3094d4f2208b09663e174504db277867 100644 (file)
@@ -318,8 +318,7 @@ int imapc_storage_client_create(struct mail_namespace *ns,
 
        if (master_service_settings_parser_get(ns->user->event,
                        ns->user->set_parser, imapc_get_setting_parser_info(),
-                       MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND,
-                       &imapc_set, error_r) < 0)
+                       0, &imapc_set, error_r) < 0)
                return -1;
 
        i_zero(&set);
index 5f3feb901b733dfc045733a61a20c05bcd22409f..bb0b104c63001a0e147f7df0e1161f61e38a90e2 100644 (file)
@@ -59,8 +59,7 @@ maildir_storage_create(struct mail_storage *_storage, struct mail_namespace *ns,
 
        if (master_service_settings_parser_get(_storage->event,
                        _storage->user->set_parser,
-                       maildir_get_setting_parser_info(),
-                       MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND,
+                       maildir_get_setting_parser_info(), 0,
                        &storage->set, error_r) < 0)
                return -1;
 
index 444ace27fd47f115bf7578c2897334c1ee87d79a..7b2a3b98c98224441c4ef66baaead9d5d9663381 100644 (file)
@@ -187,8 +187,7 @@ mbox_storage_create(struct mail_storage *_storage, struct mail_namespace *ns,
 
        if (master_service_settings_parser_get(_storage->event,
                        _storage->user->set_parser,
-                       mbox_get_setting_parser_info(),
-                       MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND,
+                       mbox_get_setting_parser_info(), 0,
                        &storage->set, error_r) < 0)
                return -1;
 
index 2a3822616b1c322939f9d5b8aa99f3043b81412b..bc0961611effc0221c8471fe3579e0e08b7b21d6 100644 (file)
@@ -44,8 +44,7 @@ pop3c_storage_create(struct mail_storage *_storage,
 
        if (master_service_settings_parser_get(_storage->event,
                        _storage->user->set_parser,
-                       pop3c_get_setting_parser_info(),
-                       MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND,
+                       pop3c_get_setting_parser_info(), 0,
                        &storage->set, error_r) < 0)
                return -1;
 
index 85aa5fa9c12d87b0c9e2da65ff35243aa5e3ca19..67816e94aa95fe0ac16a8da42b3ed9253b4bc711 100644 (file)
@@ -163,31 +163,7 @@ int mail_user_init(struct mail_user *user, const char **error_r)
                        &mail_storage_setting_parser_info, 0,
                        &user->_mail_set, &error) < 0)
                user->error = p_strdup(user->pool, error);
-
-       struct mail_storage_service_ctx *service_ctx =
-               mail_storage_service_user_get_service_ctx(user->service_user);
-       const struct setting_parser_info *const *set_roots =
-               mail_storage_service_get_set_roots(service_ctx);
-       for (unsigned int i = 0; set_roots[i] != NULL; i++) {
-               if (user->error != NULL)
-                       break;
-
-               void *set = settings_parser_get_root_set(user->set_parser, set_roots[i]);
-               /* check settings so that the duplicated structure will again
-                  contain the parsed fields */
-               if (!settings_check(set_roots[i], user->pool, set, &error)) {
-                       user->error = p_strdup_printf(user->pool,
-                               "Settings check unexpectedly failed: %s", error);
-                       break;
-               }
-               if (mail_user_var_expand(user, set_roots[i], set, &error) <= 0) {
-                       user->error = p_strdup_printf(user->pool,
-                               "Failed to expand settings: %s", error);
-                       break;
-               }
-       }
-
-       if (user->error == NULL)
+       else
                mail_user_expand_plugins_envs(user, user->_mail_set);
 
        user->ssl_set = p_new(user->pool, struct ssl_iostream_settings, 1);
index d066a4833681ba2e3282d84ffb1cac394c481d43..ecbd89d2f88a44f6a4d778ee271c4d9e9b530abe 100644 (file)
@@ -498,8 +498,8 @@ lmtp_local_deliver(struct lmtp_local *local,
 
        lldctx.rcpt_user = rcpt_user;
        if (master_service_settings_parser_get(rcpt_user->event,
-                       rcpt_user->set_parser, &smtp_submit_setting_parser_info,
-                       MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND,
+                       rcpt_user->set_parser,
+                       &smtp_submit_setting_parser_info, 0,
                        &lldctx.smtp_set, &error) < 0) {
                e_error(rcpt->event, "%s", error);
                smtp_server_recipient_reply(rcpt, 451, "4.3.0",
index ee538d30c1705d7289191cc8b8c78d70cbf1f742..5cead708022d910fdc1faea95d22e85d442ce7cc 100644 (file)
@@ -148,9 +148,8 @@ client_create_from_input(const struct mail_storage_service_input *input,
        restrict_access_allow_coredumps(TRUE);
 
        if (master_service_settings_parser_get(mail_user->event,
-                       mail_user->set_parser, &pop3_setting_parser_info,
-                       MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND,
-                       &set, error_r) < 0) {
+                       mail_user->set_parser,
+                       &pop3_setting_parser_info, 0, &set, error_r) < 0) {
                if (write(fd_out, lookup_error_str, strlen(lookup_error_str)) < 0) {
                        /* ignored */
                }
index 65b6e661403d2a0008b12d4380ab1aaaccb21fb7..b7e36d973719e8a7852a13bb81ec1b2af01628d4 100644 (file)
@@ -193,8 +193,7 @@ client_create_from_input(const struct mail_storage_service_input *input,
 
        if (master_service_settings_parser_get(mail_user->event,
                        mail_user->set_parser, &submission_setting_parser_info,
-                       MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND,
-                       &set, error_r) < 0) {
+                       0, &set, error_r) < 0) {
                send_error(fd_out, event, my_hostname,
                        "4.7.0", MAIL_ERRSTR_CRITICAL_MSG);
                mail_user_deinit(&mail_user);