]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: client: Properly reset connection state upon reconnect.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Sun, 11 Nov 2018 19:41:18 +0000 (20:41 +0100)
committerMartti Rannanjärvi <martti.rannanjarvi@open-xchange.com>
Mon, 18 Feb 2019 08:23:58 +0000 (10:23 +0200)
src/lib-smtp/smtp-client-connection.c

index c4591189e369445b4718bac64289ff305b2302a8..03263a2b8c3a24f829c98212676fdd0a042c2b77 100644 (file)
@@ -1549,8 +1549,9 @@ smtp_client_connection_do_connect(struct smtp_client_connection *conn)
 {
        unsigned int msecs;
 
-       conn->connect_failed = FALSE;
-       conn->handshake_failed = FALSE;
+       if (conn->closed || conn->failing)
+               return;
+
        if (connection_client_connect(&conn->conn) < 0) {
                smtp_client_connection_connected(&conn->conn, FALSE);
                return;
@@ -1715,7 +1716,17 @@ void smtp_client_connection_connect(struct smtp_client_connection *conn,
                return;
        }
 
+       if (conn->closed || conn->failing)
+               return;
+
        conn->xclient_replies_expected = 0;
+       conn->authenticated = FALSE;
+       conn->xclient_sent = FALSE;
+       conn->connect_failed = FALSE;
+       conn->connect_succeeded = FALSE;
+       conn->handshake_failed = FALSE;
+       conn->sent_quit = FALSE;
+       conn->reset_needed = FALSE;
 
        i_assert(conn->login_callback == NULL);
        conn->login_callback = login_callback;