diff --git a/src/cluster.c b/src/cluster.c
index 252f19f0..264ef4f6 100644
--- a/src/cluster.c
+++ b/src/cluster.c
@@ -3467,9 +3467,9 @@ void clusterReplyMultiBulkSlots(redisClient *c) {
         clusterNode *node = dictGetVal(de);
         int j = 0, start = -1;
 
-        /* If node is down or not a master, skip it. */
-        if (node->flags & REDIS_NODE_FAIL || !(node->flags & REDIS_NODE_MASTER))
-            continue;
+        /* Skip slaves (that are iterated when producing the output of their
+         * master) and  masters not serving any slot. */
+        if (!nodeIsMaster(node) || node->numslots == 0) continue;
 
         for (j = 0; j < REDIS_CLUSTER_SLOTS; j++) {
             int bit;