]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-imap-client: Add asserts to make sure running commands always have a timeout
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 22 Feb 2021 14:01:49 +0000 (16:01 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Wed, 3 Mar 2021 06:49:32 +0000 (06:49 +0000)
src/lib-imap-client/imapc-connection.c

index 0d7a753ec9350ebe1b46e1a32a86e24663d73a71..3d8887d790142053b71127873a77cbdf82e5c248 100644 (file)
@@ -447,8 +447,10 @@ void imapc_connection_disconnect_full(struct imapc_connection *conn,
        timeout_remove(&conn->to);
        conn->reconnecting = reconnecting;
 
-       if (conn->state == IMAPC_CONNECTION_STATE_DISCONNECTED)
+       if (conn->state == IMAPC_CONNECTION_STATE_DISCONNECTED) {
+               i_assert(array_count(&conn->cmd_wait_list) == 0);
                return;
+       }
 
        if (conn->client->set.debug)
                i_debug("imapc(%s): Disconnected", conn->name);
@@ -871,6 +873,7 @@ imapc_connection_auth_finish(struct imapc_connection *conn,
 
        imapc_auth_ok(conn);
 
+       i_assert(array_count(&conn->cmd_wait_list) == 0);
        timeout_remove(&conn->to);
        imapc_connection_set_state(conn, IMAPC_CONNECTION_STATE_DONE);
        imapc_login_callback(conn, reply);
@@ -2029,6 +2032,8 @@ static void imapc_command_send_finished(struct imapc_connection *conn,
 {
        struct imapc_command *const *cmdp;
 
+       i_assert(conn->to != NULL);
+
        if (cmd->idle)
                conn->idle_plus_waiting = TRUE;
        cmd->sent = TRUE;