From: Timo Sirainen Date: Thu, 5 Oct 2017 08:49:31 +0000 (+0300) Subject: director: Don't crash on doveadm director ring remove for unknown director X-Git-Tag: 2.3.0.rc1~911 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5c340190af02d8ec26838b27a83e74fb6d234c0b;p=thirdparty%2Fdovecot%2Fcore.git director: Don't crash on doveadm director ring remove for unknown director Ring syncing isn't started, so it shouldn't try to wait for ring sync. Fixes: Panic: file doveadm-connection.c: line 859 (doveadm_connection_cmd_run): assertion failed: (conn->dir->right == NULL && conn->dir->left == NULL) --- diff --git a/src/director/doveadm-connection.c b/src/director/doveadm-connection.c index 570ea7e38b..99d0c1d38f 100644 --- a/src/director/doveadm-connection.c +++ b/src/director/doveadm-connection.c @@ -284,11 +284,13 @@ doveadm_cmd_director_remove(struct doveadm_connection *conn, host = port != 0 ? director_host_lookup(conn->dir, &ip, port) : director_host_lookup_ip(conn->dir, &ip); - if (host == NULL) + if (host == NULL) { o_stream_nsend_str(conn->output, "NOTFOUND\n"); - else + return DOVEADM_DIRECTOR_CMD_RET_OK; + } else { director_ring_remove(host, conn->dir->self_host); - return DOVEADM_DIRECTOR_CMD_RET_RING_SYNC_OK; + return DOVEADM_DIRECTOR_CMD_RET_RING_SYNC_OK; + } } static enum doveadm_director_cmd_ret