From: Stephan Bosch Date: Thu, 21 Dec 2017 22:00:18 +0000 (+0100) Subject: lib-smtp: server: Change conn_start_tls() connection callback to return a success... X-Git-Tag: 2.3.0~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b1de00590435fe5189d2057126cebe5b24db36d2;p=thirdparty%2Fdovecot%2Fcore.git lib-smtp: server: Change conn_start_tls() connection callback to return a success status. --- diff --git a/src/lib-smtp/smtp-server-cmd-starttls.c b/src/lib-smtp/smtp-server-cmd-starttls.c index f11b4910cf..fd5d983049 100644 --- a/src/lib-smtp/smtp-server-cmd-starttls.c +++ b/src/lib-smtp/smtp-server-cmd-starttls.c @@ -22,11 +22,12 @@ static int cmd_starttls_start(struct smtp_server_connection *conn) struct smtp_server_connection *tmp_conn = conn; struct istream *input = conn->conn.input; struct ostream *output = conn->conn.output; + int ret; smtp_server_connection_ref(tmp_conn); - callbacks->conn_start_tls(tmp_conn->context, + ret = callbacks->conn_start_tls(tmp_conn->context, &input, &output); - if (!smtp_server_connection_unref(&tmp_conn)) + if (!smtp_server_connection_unref(&tmp_conn) || ret < 0) return -1; smtp_server_connection_set_streams(conn, input, output); diff --git a/src/lib-smtp/smtp-server.h b/src/lib-smtp/smtp-server.h index 898586224a..302b1fc856 100644 --- a/src/lib-smtp/smtp-server.h +++ b/src/lib-smtp/smtp-server.h @@ -147,8 +147,6 @@ struct smtp_server_callbacks { /* STARTTLS */ int (*conn_cmd_starttls)(void *conn_ctx, struct smtp_server_cmd_ctx *cmd); - void (*conn_start_tls)(void *conn_ctx, - struct istream **input, struct ostream **output); /* AUTH */ int (*conn_cmd_auth)(void *conn_ctx, struct smtp_server_cmd_ctx *cmd, @@ -210,6 +208,8 @@ struct smtp_server_callbacks { const struct smtp_proxy_data *data); /* Connection */ + int (*conn_start_tls)(void *conn_ctx, + struct istream **input, struct ostream **output); void (*conn_disconnect)(void *context, const char *reason); void (*conn_destroy)(void *context); diff --git a/src/submission-login/client.c b/src/submission-login/client.c index 629352020d..bb545d0bc9 100644 --- a/src/submission-login/client.c +++ b/src/submission-login/client.c @@ -26,7 +26,7 @@ static const struct smtp_server_callbacks smtp_callbacks; static struct smtp_server *smtp_server = NULL; -static void submission_login_start_tls(void *conn_ctx, +static int submission_login_start_tls(void *conn_ctx, struct istream **input, struct ostream **output) { struct submission_client *subm_client = conn_ctx; @@ -39,12 +39,13 @@ static void submission_login_start_tls(void *conn_ctx, "TLS initialization failed."); client_destroy(client, "Disconnected: TLS initialization failed."); - return; + return -1; } login_refresh_proctitle(); *input = client->input; *output = client->output; + return 0; } static struct client *submission_client_alloc(pool_t pool)