]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
director: Add assert to make sure doveadm connection's IO isn't added multiple times
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Wed, 19 Sep 2018 08:32:08 +0000 (11:32 +0300)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Mon, 24 Sep 2018 11:30:00 +0000 (14:30 +0300)
src/director/doveadm-connection.c

index 947a3af266b4305ce685ccf8f3b9eda71ac792f0..38d226e12a5a2e39a947cad2f8436648a4ce47df 100644 (file)
@@ -951,6 +951,7 @@ doveadm_connection_ring_sync_timeout(struct doveadm_connection *conn)
        doveadm_connection_ring_sync_list_move(conn);
        o_stream_nsend_str(conn->output, "Ring sync timed out\n");
 
+       i_assert(conn->io == NULL);
        doveadm_connection_set_io(conn);
        io_set_pending(conn->io);
 
@@ -1168,6 +1169,10 @@ static void doveadm_connections_continue_reset_cmds(void)
 
 void doveadm_connections_ring_synced(struct director *dir)
 {
+       /* Note that it's not possible for a single connection to be multiple
+          times in doveadm_ring_sync_pending_connections. This is prevented
+          by removing input IO from the connection whenever it's added to the
+          list. */
        while (doveadm_ring_sync_pending_connections != NULL &&
               dir->ring_synced) {
                struct doveadm_connection *conn =