]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage, global: Replace mail_user_init_ssl_client_settings() with mail_user...
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 12 Jan 2023 14:42:56 +0000 (16:42 +0200)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 20 Nov 2023 12:20:16 +0000 (14:20 +0200)
The ssl settings are used all over the place, so it's easier to just add
them to mail_user directly.

src/lib-lda/mail-send.c
src/lib-storage/index/imapc/imapc-storage.c
src/lib-storage/index/pop3c/pop3c-storage.c
src/lib-storage/mail-user.c
src/lib-storage/mail-user.h
src/plugins/fts-solr/fts-backend-solr-old.c
src/plugins/fts-solr/fts-backend-solr.c
src/plugins/fts/fts-parser-tika.c
src/plugins/push-notification/push-notification-driver-ox.c
src/submission/submission-backend-relay.c

index d75280600d3c45d547acf5ea6854c5d8e4487861..af77f0d214c119faefef65e35f35ca48797bf2aa 100644 (file)
@@ -51,7 +51,6 @@ int mail_send_rejection(struct mail_deliver_context *ctx,
                        const char *reason)
 {
        struct mail_user *user = ctx->rcpt_user;
-       struct ssl_iostream_settings ssl_set;
        struct mail *mail = ctx->src_mail;
        struct istream *input;
        struct smtp_submit_input smtp_input;
@@ -98,10 +97,8 @@ int mail_send_rejection(struct mail_deliver_context *ctx,
 
        vtable = get_var_expand_table(mail, recipient, reason);
 
-       mail_user_init_ssl_client_settings(user, &ssl_set);
-
        i_zero(&smtp_input);
-       smtp_input.ssl = &ssl_set;
+       smtp_input.ssl = user->ssl_set;
        smtp_submit = smtp_submit_init_simple(&smtp_input, ctx->smtp_set, NULL);
        smtp_submit_add_rcpt(smtp_submit, return_addr);
        output = smtp_submit_send(smtp_submit);
index 88838ea36138e4820875e97f19014e29425da68e..d25103c8abcdc77914ab134928067194901fe2c6 100644 (file)
@@ -354,7 +354,7 @@ int imapc_storage_client_create(struct mail_namespace *ns,
        mail_user_set_get_temp_prefix(str, ns->user->set);
        set.temp_path_prefix = str_c(str);
 
-       mail_user_init_ssl_client_settings(ns->user, &set.ssl_set);
+       set.ssl_set = *ns->user->ssl_set;
        if (!imapc_set->imapc_ssl_verify)
                set.ssl_set.allow_invalid_cert = TRUE;
 
index f5ccdbed55590eef061b29615df69bfa771e0147..e5ce89696b9bd3afba6c2b93559fb8de80b97b19 100644 (file)
@@ -83,7 +83,7 @@ pop3c_client_create_from_set(struct mail_storage *storage,
        client_set.rawlog_dir =
                mail_user_home_expand(storage->user, set->pop3c_rawlog_dir);
 
-       mail_user_init_ssl_client_settings(storage->user, &client_set.ssl_set);
+       client_set.ssl_set = *storage->user->ssl_set;
 
        if (!set->pop3c_ssl_verify)
                client_set.ssl_set.allow_invalid_cert = TRUE;
index 329848052688495d3e60029bf0b84e1b53c0e1aa..751cf92ba77228d694a3e130ab1da62ad18e28ae 100644 (file)
@@ -202,6 +202,13 @@ int mail_user_init(struct mail_user *user, const char **error_r)
        user->settings_expanded = TRUE;
        mail_user_expand_plugins_envs(user);
 
+       user->ssl_set = p_new(user->pool, struct ssl_iostream_settings, 1);
+       if (user->error == NULL &&
+           mail_storage_service_user_init_ssl_client_settings(
+                       user->service_user, user->pool,
+                       user->ssl_set, &error) < 0)
+               user->error = p_strdup(user->pool, error);
+
        /* autocreated users for shared mailboxes need to be fully initialized
           if they don't exist, since they're going to be used anyway */
        if (user->error == NULL || user->nonexistent) {
@@ -792,16 +799,6 @@ struct mail_user *mail_user_dup(struct mail_user *user)
        return user2;
 }
 
-void mail_user_init_ssl_client_settings(struct mail_user *user,
-       struct ssl_iostream_settings *ssl_set_r)
-{
-       const struct master_service_ssl_settings *ssl_set =
-               mail_storage_service_user_get_ssl_settings(user->service_user);
-
-       master_service_ssl_client_settings_to_iostream_set(ssl_set,
-               pool_datastack_create(), ssl_set_r);
-}
-
 void mail_user_init_fs_settings(struct mail_user *user,
                                struct fs_settings *fs_set,
                                struct ssl_iostream_settings *ssl_set_r)
@@ -815,7 +812,7 @@ void mail_user_init_fs_settings(struct mail_user *user,
        fs_set->enable_timing = user->stats_enabled;
 
        fs_set->ssl_client_set = ssl_set_r;
-       mail_user_init_ssl_client_settings(user, ssl_set_r);
+       *ssl_set_r = *user->ssl_set;
 }
 
 static int
index 749ce7aadadaea185cae248b5b7052e63c6744e5..cd7e03ded227c240bfd2d4bb68a78d34d8eb5590 100644 (file)
@@ -61,6 +61,7 @@ struct mail_user {
        struct setting_parser_context *set_parser;
        const struct mail_user_settings *unexpanded_set;
        struct mail_user_settings *set;
+       struct ssl_iostream_settings *ssl_set;
        struct mail_namespace *namespaces;
        struct mail_storage *storages;
        struct dict_op_settings *dict_op_set;
@@ -214,10 +215,6 @@ mail_user_get_storage_class(struct mail_user *user, const char *name);
 /* Import any event_ fields from userdb fields to mail user event. */
 void mail_user_add_event_fields(struct mail_user *user);
 
-/* Initialize SSL client settings from mail_user settings. */
-void mail_user_init_ssl_client_settings(struct mail_user *user,
-       struct ssl_iostream_settings *ssl_set_r);
-
 /* Initialize fs_settings from mail_user settings. */
 void mail_user_init_fs_settings(struct mail_user *user,
                                struct fs_settings *fs_set,
index 238240df2a3a524e598079669f0ee13a37c0d3d0..a907899f2e3c167968a0c508ed36b7bb1836d2f8 100644 (file)
@@ -246,7 +246,6 @@ fts_backend_solr_init(struct fts_backend *_backend, const char **error_r)
 {
        struct solr_fts_backend *backend = (struct solr_fts_backend *)_backend;
        struct fts_solr_user *fuser = FTS_SOLR_USER_CONTEXT(_backend->ns->user);
-       struct ssl_iostream_settings ssl_set;
        const char *str;
 
        if (fuser == NULL) {
@@ -254,8 +253,8 @@ fts_backend_solr_init(struct fts_backend *_backend, const char **error_r)
                return -1;
        }
 
-       mail_user_init_ssl_client_settings(_backend->ns->user, &ssl_set);
-       if (solr_connection_init(&fuser->set, &ssl_set, _backend->event,
+       if (solr_connection_init(&fuser->set, _backend->ns->user->ssl_set,
+                                _backend->event,
                                 &backend->solr_conn, error_r) < 0)
                return -1;
 
index c1fc8d00aafcb75e59f4c36470a29ed681201d2a..a15993cac6387e54e7730d5557caeb142dad4343 100644 (file)
@@ -181,7 +181,6 @@ fts_backend_solr_init(struct fts_backend *_backend, const char **error_r)
 {
        struct solr_fts_backend *backend = (struct solr_fts_backend *)_backend;
        struct fts_solr_user *fuser = FTS_SOLR_USER_CONTEXT(_backend->ns->user);
-       struct ssl_iostream_settings ssl_set;
 
        if (fuser == NULL) {
                *error_r = "Invalid fts_solr setting";
@@ -193,8 +192,8 @@ fts_backend_solr_init(struct fts_backend *_backend, const char **error_r)
                _backend->flags |= FTS_BACKEND_FLAG_TOKENIZED_INPUT;
        }
 
-       mail_user_init_ssl_client_settings(_backend->ns->user, &ssl_set);
-       return solr_connection_init(&fuser->set, &ssl_set, _backend->event,
+       return solr_connection_init(&fuser->set, _backend->ns->user->ssl_set,
+                                   _backend->event,
                                    &backend->solr_conn, error_r);
 }
 
index 594d7d7f88b83d2a533102fba4ef76a3cf7348a3..67dbabd79944312ec3d2fbc3925ba89cdc7e9df6 100644 (file)
@@ -42,7 +42,6 @@ tika_get_http_client_url(struct fts_parser_context *parser_context, struct http_
        struct event *event = parser_context->event;
        struct fts_parser_tika_user *tuser = TIKA_USER_CONTEXT(user);
        struct http_client_settings http_set;
-       struct ssl_iostream_settings ssl_set;
        const char *url, *error;
 
        url = mail_user_plugin_getenv(user, "fts_tika");
@@ -66,8 +65,6 @@ tika_get_http_client_url(struct fts_parser_context *parser_context, struct http_
        }
 
        if (tika_http_client == NULL) {
-               mail_user_init_ssl_client_settings(user, &ssl_set);
-
                i_zero(&http_set);
                http_set.max_idle_time_msecs = 100;
                http_set.max_parallel_connections = 1;
@@ -76,7 +73,7 @@ tika_get_http_client_url(struct fts_parser_context *parser_context, struct http_
                http_set.max_attempts = 3;
                http_set.connect_timeout_msecs = 5*1000;
                http_set.request_timeout_msecs = 60*1000;
-               http_set.ssl = &ssl_set;
+               http_set.ssl = user->ssl_set;
                http_set.debug = event_want_debug(user->event);
                http_set.event_parent = user->event;
 
index bb99dbebe38d9112a39023ff49b1434d6a8415cf..047d40ea5aacc1a06180f6ab5f6898caf9b75d82 100644 (file)
@@ -63,7 +63,6 @@ push_notification_driver_ox_init_global(
        struct push_notification_driver_ox_config *config)
 {
        struct http_client_settings http_set;
-       struct ssl_iostream_settings ssl_set;
 
        if (ox_global->http_client == NULL) {
                /* This is going to use the first user's settings, but these are
@@ -74,8 +73,7 @@ push_notification_driver_ox_init_global(
                http_set.max_attempts = config->http_max_retries+1;
                http_set.request_timeout_msecs = config->http_timeout_msecs;
                http_set.event_parent = user->event;
-               mail_user_init_ssl_client_settings(user, &ssl_set);
-               http_set.ssl = &ssl_set;
+               http_set.ssl = user->ssl_set;
 
                ox_global->http_client = http_client_init(&http_set);
        }
index 2f08801a6e920c11e0fcd822532dc4afa29e52eb..11e1004d84e539da27c6f1206e8c8349f5da32ea 100644 (file)
@@ -1088,7 +1088,7 @@ submission_backend_relay_create(
 
        event_set_append_log_prefix(rbackend->backend.event, "relay: ");
 
-       mail_user_init_ssl_client_settings(user, &ssl_set);
+       ssl_set = *user->ssl_set;
        if (set->ssl_verify)
                ssl_set.verbose_invalid_cert = TRUE;
        else