From 67c804150a5d8f8c215d71600d8894d9ddaebf96 Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Wed, 27 Dec 2017 16:18:16 +0100 Subject: [PATCH] lib-smtp: server: Delay handling initial input (from login service) until after smtp_server_connection_start(). Instead, it is now handled in normal io callback. --- src/lib-smtp/smtp-server-connection.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/src/lib-smtp/smtp-server-connection.c b/src/lib-smtp/smtp-server-connection.c index 0a69ce6416..bab72ff36f 100644 --- a/src/lib-smtp/smtp-server-connection.c +++ b/src/lib-smtp/smtp-server-connection.c @@ -285,8 +285,6 @@ smtp_server_connection_timeout_update(struct smtp_server_connection *conn) static void smtp_server_connection_ready(struct smtp_server_connection *conn) { - struct ostream *output; - conn->raw_input = conn->conn.input; conn->raw_output = conn->conn.output; @@ -297,10 +295,7 @@ smtp_server_connection_ready(struct smtp_server_connection *conn) o_stream_set_flush_callback(conn->conn.output, smtp_server_connection_output, conn); - output = conn->conn.output; - o_stream_ref(output); - o_stream_cork(output); - + o_stream_cork(conn->conn.output); if (conn->authenticated) { /* RFC 4954, Section 4: Should the client successfully complete the exchange, the @@ -312,13 +307,8 @@ smtp_server_connection_ready(struct smtp_server_connection *conn) "220 %s %s", conn->set.hostname, conn->set.login_greeting); } - - if (i_stream_get_data_size(conn->conn.input) > 0) - smtp_server_connection_input(&conn->conn); - if (!conn->corked) - o_stream_uncork(output); - o_stream_unref(&output); + o_stream_uncork(conn->conn.output); } static void smtp_server_connection_destroy(struct connection *_conn) @@ -1158,11 +1148,11 @@ void smtp_server_connection_start(struct smtp_server_connection *conn) conn->raw_input = conn->conn.input; conn->raw_output = conn->conn.output; - smtp_server_connection_timeout_start(conn); - smtp_server_connection_input_resume(conn); - if (!conn->ssl_start) smtp_server_connection_ready(conn); + + smtp_server_connection_timeout_start(conn); + smtp_server_connection_input_resume(conn); } void smtp_server_connection_close(struct smtp_server_connection **_conn,