From: Timo Sirainen Date: Thu, 12 Jan 2023 14:42:56 +0000 (+0200) Subject: lib-storage, global: Replace mail_user_init_ssl_client_settings() with mail_user... X-Git-Tag: 2.4.0~2300 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed24c93f54b1d584acba0eb4fbee9f9fe0e18508;p=thirdparty%2Fdovecot%2Fcore.git lib-storage, global: Replace mail_user_init_ssl_client_settings() with mail_user.ssl_set The ssl settings are used all over the place, so it's easier to just add them to mail_user directly. --- diff --git a/src/lib-lda/mail-send.c b/src/lib-lda/mail-send.c index d75280600d..af77f0d214 100644 --- a/src/lib-lda/mail-send.c +++ b/src/lib-lda/mail-send.c @@ -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); diff --git a/src/lib-storage/index/imapc/imapc-storage.c b/src/lib-storage/index/imapc/imapc-storage.c index 88838ea361..d25103c8ab 100644 --- a/src/lib-storage/index/imapc/imapc-storage.c +++ b/src/lib-storage/index/imapc/imapc-storage.c @@ -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; diff --git a/src/lib-storage/index/pop3c/pop3c-storage.c b/src/lib-storage/index/pop3c/pop3c-storage.c index f5ccdbed55..e5ce89696b 100644 --- a/src/lib-storage/index/pop3c/pop3c-storage.c +++ b/src/lib-storage/index/pop3c/pop3c-storage.c @@ -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; diff --git a/src/lib-storage/mail-user.c b/src/lib-storage/mail-user.c index 3298480526..751cf92ba7 100644 --- a/src/lib-storage/mail-user.c +++ b/src/lib-storage/mail-user.c @@ -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 diff --git a/src/lib-storage/mail-user.h b/src/lib-storage/mail-user.h index 749ce7aada..cd7e03ded2 100644 --- a/src/lib-storage/mail-user.h +++ b/src/lib-storage/mail-user.h @@ -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, diff --git a/src/plugins/fts-solr/fts-backend-solr-old.c b/src/plugins/fts-solr/fts-backend-solr-old.c index 238240df2a..a907899f2e 100644 --- a/src/plugins/fts-solr/fts-backend-solr-old.c +++ b/src/plugins/fts-solr/fts-backend-solr-old.c @@ -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; diff --git a/src/plugins/fts-solr/fts-backend-solr.c b/src/plugins/fts-solr/fts-backend-solr.c index c1fc8d00aa..a15993cac6 100644 --- a/src/plugins/fts-solr/fts-backend-solr.c +++ b/src/plugins/fts-solr/fts-backend-solr.c @@ -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); } diff --git a/src/plugins/fts/fts-parser-tika.c b/src/plugins/fts/fts-parser-tika.c index 594d7d7f88..67dbabd799 100644 --- a/src/plugins/fts/fts-parser-tika.c +++ b/src/plugins/fts/fts-parser-tika.c @@ -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; diff --git a/src/plugins/push-notification/push-notification-driver-ox.c b/src/plugins/push-notification/push-notification-driver-ox.c index bb99dbebe3..047d40ea5a 100644 --- a/src/plugins/push-notification/push-notification-driver-ox.c +++ b/src/plugins/push-notification/push-notification-driver-ox.c @@ -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); } diff --git a/src/submission/submission-backend-relay.c b/src/submission/submission-backend-relay.c index 2f08801a6e..11e1004d84 100644 --- a/src/submission/submission-backend-relay.c +++ b/src/submission/submission-backend-relay.c @@ -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