]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: server: Change conn_start_tls() connection callback to return a success...
authorStephan Bosch <stephan.bosch@dovecot.fi>
Thu, 21 Dec 2017 22:00:18 +0000 (23:00 +0100)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 22 Dec 2017 10:46:58 +0000 (12:46 +0200)
src/lib-smtp/smtp-server-cmd-starttls.c
src/lib-smtp/smtp-server.h
src/submission-login/client.c

index f11b4910cf82c1dcd5ccbcaa16dfbe61615c7e77..fd5d98304957be9cc8c3466fdd50421b6ea571b2 100644 (file)
@@ -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);
index 898586224ab322dbbcbaf4531a677e17f29c6887..302b1fc85683bd66d07aded3ea1a01526b5cf36b 100644 (file)
@@ -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);
 
index 629352020d393d860e94c579ad0f77301db791b9..bb545d0bc9e893563bc264af3f00202c95da6442 100644 (file)
@@ -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)