From 12d46e746c43bc1a2f4351e31732db7a4169d8e0 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Wed, 19 Sep 2018 11:32:08 +0300 Subject: [PATCH] director: Add assert to make sure doveadm connection's IO isn't added multiple times --- src/director/doveadm-connection.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/director/doveadm-connection.c b/src/director/doveadm-connection.c index 03418725fb..dfeaa81666 100644 --- a/src/director/doveadm-connection.c +++ b/src/director/doveadm-connection.c @@ -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); @@ -1171,6 +1172,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 = -- 2.47.3