From: Aki Tuomi Date: Fri, 8 Jul 2022 09:03:25 +0000 (+0300) Subject: global: Pass event to SSL iostream X-Git-Tag: 2.4.0~3758 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0b893b3b067553db2a44fcd16c217cfdcb91c808;p=thirdparty%2Fdovecot%2Fcore.git global: Pass event to SSL iostream --- diff --git a/src/lib-doveadm/doveadm-client.c b/src/lib-doveadm/doveadm-client.c index d9ffeb0347..ef39edc16c 100644 --- a/src/lib-doveadm/doveadm-client.c +++ b/src/lib-doveadm/doveadm-client.c @@ -568,6 +568,7 @@ static int doveadm_client_init_ssl(struct doveadm_client *conn, conn->set.hostname != NULL ? conn->set.hostname : ""; connection_input_halt(&conn->conn); if (io_stream_create_ssl_client(conn->set.ssl_ctx, hostname, &ssl_set, + conn->conn.event, &conn->conn.input, &conn->conn.output, &conn->ssl_iostream, &error) < 0) { *error_r = t_strdup_printf( diff --git a/src/lib-http/http-client-connection.c b/src/lib-http/http-client-connection.c index 0b8e7a170f..eade551021 100644 --- a/src/lib-http/http-client-connection.c +++ b/src/lib-http/http-client-connection.c @@ -1515,7 +1515,7 @@ http_client_connection_ssl_init(struct http_client_connection *conn, connection_input_halt(&conn->conn); if (io_stream_create_ssl_client(ssl_ctx, pshared->addr.a.tcp.https_name, - &ssl_set, + &ssl_set, conn->event, &conn->conn.input, &conn->conn.output, &conn->ssl_iostream, &error) < 0) { *error_r = t_strdup_printf( diff --git a/src/lib-http/http-server-connection.c b/src/lib-http/http-server-connection.c index ae9f20ae6a..0e5c37879b 100644 --- a/src/lib-http/http-server-connection.c +++ b/src/lib-http/http-server-connection.c @@ -373,6 +373,7 @@ http_server_connection_ssl_init(struct http_server_connection *conn) } else { ret = io_stream_create_ssl_server(server->ssl_ctx, server->set.ssl, + server->event, &conn->conn.input, &conn->conn.output, &conn->ssl_iostream, &error); diff --git a/src/lib-imap-client/imapc-connection.c b/src/lib-imap-client/imapc-connection.c index 50912bb1c1..89644dab47 100644 --- a/src/lib-imap-client/imapc-connection.c +++ b/src/lib-imap-client/imapc-connection.c @@ -1670,6 +1670,7 @@ static int imapc_connection_ssl_init(struct imapc_connection *conn) if (io_stream_create_ssl_client(conn->client->ssl_ctx, conn->client->set.host, &conn->client->set.ssl_set, + conn->client->event, &conn->input, &conn->output, &conn->ssl_iostream, &error) < 0) { i_error("imapc(%s): Couldn't initialize SSL client: %s", diff --git a/src/lib-master/master-service-ssl.c b/src/lib-master/master-service-ssl.c index 5d1b5156cf..06cd98184d 100644 --- a/src/lib-master/master-service-ssl.c +++ b/src/lib-master/master-service-ssl.c @@ -33,7 +33,7 @@ int master_service_ssl_init(struct master_service *service, i_zero(&ssl_set); ssl_set.verbose = set->verbose_ssl; ssl_set.verify_remote_cert = set->ssl_verify_client_cert; - return io_stream_create_ssl_server(service->ssl_ctx, &ssl_set, + return io_stream_create_ssl_server(service->ssl_ctx, &ssl_set, NULL, input, output, ssl_iostream_r, error_r); } diff --git a/src/lib-smtp/smtp-client-connection.c b/src/lib-smtp/smtp-client-connection.c index f7c5903ddb..d0ed6804e9 100644 --- a/src/lib-smtp/smtp-client-connection.c +++ b/src/lib-smtp/smtp-client-connection.c @@ -1610,6 +1610,7 @@ smtp_client_connection_ssl_init(struct smtp_client_connection *conn, connection_input_halt(&conn->conn); if (io_stream_create_ssl_client( conn->ssl_ctx, conn->host, conn->set.ssl, + conn->event, &conn->conn.input, &conn->conn.output, &conn->ssl_iostream, &error) < 0) { *error_r = t_strdup_printf( diff --git a/src/lib-smtp/smtp-server-connection.c b/src/lib-smtp/smtp-server-connection.c index f301e82ba4..6a0717f8fa 100644 --- a/src/lib-smtp/smtp-server-connection.c +++ b/src/lib-smtp/smtp-server-connection.c @@ -395,7 +395,7 @@ int smtp_server_connection_ssl_init(struct smtp_server_connection *conn) &conn->ssl_iostream, &error); } else { ret = io_stream_create_ssl_server( - conn->ssl_ctx, conn->set.ssl, + conn->ssl_ctx, conn->set.ssl, conn->event, &conn->conn.input, &conn->conn.output, &conn->ssl_iostream, &error); } diff --git a/src/lib-smtp/test-smtp-client-errors.c b/src/lib-smtp/test-smtp-client-errors.c index 0c2b03a06e..82b23be620 100644 --- a/src/lib-smtp/test-smtp-client-errors.c +++ b/src/lib-smtp/test-smtp-client-errors.c @@ -3952,7 +3952,7 @@ server_connection_init_ssl(struct server_connection *conn) return -1; } - if (io_stream_create_ssl_server(server_ssl_ctx, &ssl_set, + if (io_stream_create_ssl_server(server_ssl_ctx, &ssl_set, conn->conn.event, &conn->conn.input, &conn->conn.output, &conn->ssl_iostream, &error) < 0) { i_error("SSL init failed: %s", error); diff --git a/src/lib-ssl-iostream/iostream-ssl.c b/src/lib-ssl-iostream/iostream-ssl.c index f6600e561c..2b56f7c01e 100644 --- a/src/lib-ssl-iostream/iostream-ssl.c +++ b/src/lib-ssl-iostream/iostream-ssl.c @@ -123,24 +123,26 @@ void ssl_iostream_context_unref(struct ssl_iostream_context **_ctx) int io_stream_create_ssl_client(struct ssl_iostream_context *ctx, const char *host, const struct ssl_iostream_settings *set, + struct event *event_parent, struct istream **input, struct ostream **output, struct ssl_iostream **iostream_r, const char **error_r) { struct ssl_iostream_settings set_copy = *set; set_copy.verify_remote_cert = TRUE; - return ssl_vfuncs->create(ctx, host, &set_copy, TRUE, input, output, - iostream_r, error_r); + return ssl_vfuncs->create(ctx, event_parent, host, &set_copy, TRUE, + input, output, iostream_r, error_r); } int io_stream_create_ssl_server(struct ssl_iostream_context *ctx, const struct ssl_iostream_settings *set, + struct event *event_parent, struct istream **input, struct ostream **output, struct ssl_iostream **iostream_r, const char **error_r) { - return ssl_vfuncs->create(ctx, NULL, set, FALSE, input, output, - iostream_r, error_r); + return ssl_vfuncs->create(ctx, event_parent, NULL, set, TRUE, + input, output, iostream_r, error_r); } void ssl_iostream_unref(struct ssl_iostream **_ssl_io) diff --git a/src/lib-ssl-iostream/iostream-ssl.h b/src/lib-ssl-iostream/iostream-ssl.h index 322448691f..f9b82c2f7c 100644 --- a/src/lib-ssl-iostream/iostream-ssl.h +++ b/src/lib-ssl-iostream/iostream-ssl.h @@ -57,11 +57,13 @@ int io_stream_ssl_global_init(const struct ssl_iostream_settings *set, int io_stream_create_ssl_client(struct ssl_iostream_context *ctx, const char *host, const struct ssl_iostream_settings *set, + struct event *event_parent, struct istream **input, struct ostream **output, struct ssl_iostream **iostream_r, const char **error_r); int io_stream_create_ssl_server(struct ssl_iostream_context *ctx, const struct ssl_iostream_settings *set, + struct event *event_parent, struct istream **input, struct ostream **output, struct ssl_iostream **iostream_r, const char **error_r); diff --git a/src/lib-ssl-iostream/test-iostream-ssl.c b/src/lib-ssl-iostream/test-iostream-ssl.c index b2533acb8b..2415ce8e86 100644 --- a/src/lib-ssl-iostream/test-iostream-ssl.c +++ b/src/lib-ssl-iostream/test-iostream-ssl.c @@ -216,12 +216,14 @@ static int test_iostream_ssl_handshake_real(struct ssl_iostream_settings *server } if (io_stream_create_ssl_server(server->ctx, server->set, + NULL, &server->input, &server->output, &server->iostream, &error) != 0) { ret = -1; } if (io_stream_create_ssl_client(client->ctx, client->hostname, client->set, + NULL, &client->input, &client->output, &client->iostream, &error) != 0) { ret = -1; @@ -411,10 +413,11 @@ static void test_iostream_ssl_get_buffer_avail_size(void) test_assert(ssl_iostream_context_init_client(client->set, &client->ctx, &error) == 0); - test_assert(io_stream_create_ssl_server(server->ctx, server->set, + test_assert(io_stream_create_ssl_server(server->ctx, server->set, NULL, &server->input, &server->output, &server->iostream, &error) == 0); test_assert(io_stream_create_ssl_client(client->ctx, "localhost", client->set, + NULL, &client->input, &client->output, &client->iostream, &error) == 0); @@ -502,10 +505,11 @@ static void test_iostream_ssl_small_packets(void) client->other = server; server->other = client; - test_assert(io_stream_create_ssl_server(server->ctx, server->set, + test_assert(io_stream_create_ssl_server(server->ctx, server->set, NULL, &server->input, &server->output, &server->iostream, &error) == 0); test_assert(io_stream_create_ssl_client(client->ctx, "localhost", client->set, + NULL, &client->input, &client->output, &client->iostream, &error) == 0); diff --git a/src/lib-storage/index/pop3c/pop3c-client.c b/src/lib-storage/index/pop3c/pop3c-client.c index fc74b5b0cd..30fb20ea6d 100644 --- a/src/lib-storage/index/pop3c/pop3c-client.c +++ b/src/lib-storage/index/pop3c/pop3c-client.c @@ -576,8 +576,9 @@ static int pop3c_client_ssl_init(struct pop3c_client *client) } if (io_stream_create_ssl_client(client->ssl_ctx, client->set.host, - &client->set.ssl_set, &client->input, - &client->output, &client->ssl_iostream, &error) < 0) { + &client->set.ssl_set, client->event, + &client->input, &client->output, + &client->ssl_iostream, &error) < 0) { i_error("pop3c(%s): Couldn't initialize SSL client: %s", client->set.host, error); return -1; diff --git a/src/login-common/client-common.c b/src/login-common/client-common.c index b33c2d6883..264e6ee92b 100644 --- a/src/login-common/client-common.c +++ b/src/login-common/client-common.c @@ -575,7 +575,7 @@ int client_init_ssl(struct client *client) "Failed to initialize SSL server context: %s", error); return -1; } - if (io_stream_create_ssl_server(ssl_ctx, &ssl_set, + if (io_stream_create_ssl_server(ssl_ctx, &ssl_set, client->event, &client->input, &client->output, &client->ssl_iostream, &error) < 0) { e_error(client->event, diff --git a/src/login-common/login-proxy.c b/src/login-common/login-proxy.c index 078096a92d..da58b16996 100644 --- a/src/login-common/login-proxy.c +++ b/src/login-common/login-proxy.c @@ -1038,6 +1038,7 @@ int login_proxy_starttls(struct login_proxy *proxy) } if (io_stream_create_ssl_client(ssl_ctx, proxy->host, &ssl_set, + proxy->event, &proxy->server_input, &proxy->server_output, &proxy->server_ssl_iostream,