]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-imap-client: Remove io earlier to avoid hammering
authorAki Tuomi <aki.tuomi@dovecot.fi>
Fri, 31 Mar 2017 08:01:15 +0000 (11:01 +0300)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Mon, 3 Apr 2017 11:52:06 +0000 (14:52 +0300)
If connection has failed and reconnection is not yet
possible, io has to be removed here, otherwise it will
keep hammering the callback.

src/lib-imap-client/imapc-connection.c

index e2629b782197dc187272c9a64e129abab10838e3..5692c849ff7a8499022781b74d52105de81da9ce 100644 (file)
@@ -1601,6 +1601,8 @@ static void imapc_connection_connected(struct imapc_connection *conn)
 {
        const struct ip_addr *ip = &conn->ips[conn->prev_connect_idx];
        int err;
+       if (conn->io != NULL)
+               io_remove(&conn->io);
 
        err = net_geterror(conn->fd);
        if (err != 0) {
@@ -1610,7 +1612,6 @@ static void imapc_connection_connected(struct imapc_connection *conn)
                        strerror(err)), IMAPC_CONNECT_RETRY_WAIT_MSECS);
                return;
        }
-       io_remove(&conn->io);
        conn->io = io_add(conn->fd, IO_READ, imapc_connection_input, conn);
 
        if (conn->client->set.ssl_mode == IMAPC_CLIENT_SSL_MODE_IMMEDIATE) {