]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: server: Moved ssl_start argument from smtp_server_connection_start() to...
authorStephan Bosch <stephan.bosch@dovecot.fi>
Wed, 27 Dec 2017 14:52:13 +0000 (15:52 +0100)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Thu, 28 Dec 2017 18:43:39 +0000 (20:43 +0200)
This frees smtp_server_connection_start() for general use.

src/lib-smtp/smtp-server-connection.c
src/lib-smtp/smtp-server.h
src/lib-smtp/test-smtp-payload.c
src/lib-smtp/test-smtp-server-errors.c
src/lmtp/client.c
src/submission-login/client.c
src/submission/submission-client.c

index 38165932c94ffb455a7a955e41d1f378b861f7f5..b5217402bfbfb01b0639981860fdd5e8337cf9c9 100644 (file)
@@ -929,7 +929,7 @@ struct smtp_server_connection *
 smtp_server_connection_create(struct smtp_server *server,
        int fd_in, int fd_out,
        const struct ip_addr *remote_ip, in_port_t remote_port,
-       const struct smtp_server_settings *set,
+       bool ssl_start, const struct smtp_server_settings *set,
        const struct smtp_server_callbacks *callbacks, void *context)
 {
        struct smtp_server_connection *conn;
@@ -942,6 +942,10 @@ smtp_server_connection_create(struct smtp_server *server,
        connection_init_server(server->conn_list,
                &conn->conn, name, fd_in, fd_out);
 
+       conn->ssl_start = ssl_start;
+       if (ssl_start)
+               conn->set.capabilities &= ~SMTP_CAPABILITY_STARTTLS;
+
        /* halt input until started */
        smtp_server_connection_input_halt(conn);
 
@@ -1130,8 +1134,7 @@ void smtp_server_connection_reply_immediate(
        }
 }
 
-void smtp_server_connection_start(struct smtp_server_connection *conn,
-                                 bool ssl_start)
+void smtp_server_connection_start(struct smtp_server_connection *conn)
 {
        conn->raw_input = conn->conn.input;
        conn->raw_output = conn->conn.output;
@@ -1139,10 +1142,7 @@ void smtp_server_connection_start(struct smtp_server_connection *conn,
        smtp_server_connection_timeout_start(conn);
        smtp_server_connection_input_resume(conn);
 
-       conn->ssl_start = ssl_start;
-       if (ssl_start)
-               conn->set.capabilities &= ~SMTP_CAPABILITY_STARTTLS;
-       else
+       if (!conn->ssl_start)
                smtp_server_connection_ready(conn);
 }
 
index 9d0c1c68dc655026410e0c65d6384517e0a0351e..323192395514c4085504f70c844ae8dceb1ecfbe 100644 (file)
@@ -281,7 +281,7 @@ struct smtp_server_connection *
 smtp_server_connection_create(struct smtp_server *server,
        int fd_in, int fd_out,
        const struct ip_addr *remote_ip, in_port_t remote_port,
-       const struct smtp_server_settings *set,
+       bool ssl_start, const struct smtp_server_settings *set,
        const struct smtp_server_callbacks *callbacks, void *context)
        ATTR_NULL(4, 6, 8);
 struct smtp_server_connection *
@@ -297,8 +297,7 @@ bool smtp_server_connection_unref(struct smtp_server_connection **_conn);
 
 /* Start the connection. Establishes SSL layer immediately if instructed,
        and sends the greeting once the connection is ready for commands. */
-void smtp_server_connection_start(struct smtp_server_connection *conn,
-       bool ssl_start);
+void smtp_server_connection_start(struct smtp_server_connection *conn);
 /* Start the connection with state and data from login service */
 void smtp_server_connection_login(struct smtp_server_connection *conn,
                                  const char *username, const char *helo,
index bea6977c9a9bdd2f4e59b852df9a7aa232bdfce5..c39adfe4c44b8d309e063c83d89af22159645c08 100644 (file)
@@ -388,8 +388,8 @@ static void client_init(int fd)
        client->pool = pool;
 
        client->smtp_conn = smtp_server_connection_create(smtp_server,
-               fd, fd, NULL, 0, NULL, &server_callbacks, client);
-       smtp_server_connection_start(client->smtp_conn, FALSE);
+               fd, fd, NULL, 0, FALSE, NULL, &server_callbacks, client);
+       smtp_server_connection_start(client->smtp_conn);
        DLLIST_PREPEND(&clients, client);
 }
 
index 98f21890dbe8f46b62db8ceec65278b07129016e..161f04d572b614c8142314a1fa5ed013953cc2fc 100644 (file)
@@ -1165,8 +1165,8 @@ server_connection_accept(void *context ATTR_UNUSED)
        server_callbacks.conn_destroy = server_connection_destroy;
 
        conn = smtp_server_connection_create(smtp_server, fd, fd,
-               NULL, 0, NULL, &server_callbacks, sconn);
-       smtp_server_connection_start(conn, FALSE);
+               NULL, 0, FALSE, NULL, &server_callbacks, sconn);
+       smtp_server_connection_start(conn);
 }
 
 /* */
index b7b2eb0481b9de582bb3892e4bf4ba1f7c89a64c..18e1b1712a5582e21c0494c9512293935c8df4bd 100644 (file)
@@ -160,12 +160,12 @@ struct client *client_create(int fd_in, int fd_out,
        client->conn = smtp_server_connection_create
                (lmtp_server, fd_in, fd_out,
                        &conn->remote_ip, conn->remote_port,
-                       &lmtp_set, &lmtp_callbacks, client);
+                       conn->ssl, &lmtp_set, &lmtp_callbacks, client);
 
        DLLIST_PREPEND(&clients, client);
        clients_count++;
 
-       smtp_server_connection_start(client->conn, conn->ssl);
+       smtp_server_connection_start(client->conn);
        i_info("Connect from %s", client_remote_id(client));
        refresh_proctitle();
        return client;
index 8d2832b907d9b5d4ab2fc93a791754c5127c41cb..51604c07841d06d5297d724a2c5a40ff20f92bef 100644 (file)
@@ -100,7 +100,7 @@ static void submission_client_notify_auth_ready(struct client *client)
        struct submission_client *subm_client =
                container_of(client, struct submission_client, common);
 
-       smtp_server_connection_start(subm_client->conn, FALSE);
+       smtp_server_connection_start(subm_client->conn);
 }
 
 static void
index 9facab2a72b2bac1d8d4644e7921a81c40658749..3c6bc66249e93585c96f0a1012fe27e20be4bfc3 100644 (file)
@@ -201,7 +201,7 @@ struct client *client_create(int fd_in, int fd_out,
 
        client->conn = smtp_server_connection_create(smtp_server,
                fd_in, fd_out, user->conn.remote_ip, user->conn.remote_port,
-               &smtp_set, &smtp_callbacks, client);
+               FALSE, &smtp_set, &smtp_callbacks, client);
 
        client_proxy_create(client, set);