]> 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)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Sun, 16 Dec 2018 20:02:06 +0000 (20:02 +0000)
src/lib-smtp/smtp-client-connection.c

index b117238235ebf47de86efa8138313c0768caefd6..55d26d14765810a5acd032c33b21e59617be6faa 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;