]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
director: Don't crash on doveadm director ring remove for unknown director
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 5 Oct 2017 08:49:31 +0000 (11:49 +0300)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Thu, 5 Oct 2017 09:22:28 +0000 (12:22 +0300)
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)

src/director/doveadm-connection.c

index 570ea7e38bbb356d09597faf25bb3af1b429c2bc..99d0c1d38f94e494e3ae7b30690ff2077144e7f0 100644 (file)
@@ -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