@@ -709,25 +709,25 @@ static int cluster_map_slots(redisCluster *c, clusterReply *r) {
709709 if ((pnode = zend_hash_str_find_ptr (c -> nodes , key , klen )) == NULL ) {
710710 master = cluster_node_create (c , host , hlen , port , low , 0 );
711711 zend_hash_str_update_ptr (c -> nodes , key , klen , master );
712- } else {
713- master = pnode ;
714- }
715712
716- // Attach slaves
717- for (j = 3 ; j < r2 -> elements ; j ++ ) {
718- r3 = r2 -> element [j ];
719- if (!VALIDATE_SLOTS_INNER (r3 )) {
720- return -1 ;
721- }
713+ // Attach slaves first time we encounter a given master in order to avoid regitering the slaves multiple times
714+ for (j = 3 ; j < r2 -> elements ; j ++ ) {
715+ r3 = r2 -> element [j ];
716+ if (!VALIDATE_SLOTS_INNER (r3 )) {
717+ return -1 ;
718+ }
722719
723- // Skip slaves where the host is ""
724- if (r3 -> element [0 ]-> len == 0 ) continue ;
720+ // Skip slaves where the host is ""
721+ if (r3 -> element [0 ]-> len == 0 ) continue ;
725722
726- // Attach this node to our slave
727- slave = cluster_node_create (c , r3 -> element [0 ]-> str ,
728- (int )r3 -> element [0 ]-> len ,
729- (unsigned short )r3 -> element [1 ]-> integer , low , 1 );
730- cluster_node_add_slave (master , slave );
723+ // Attach this node to our slave
724+ slave = cluster_node_create (c , r3 -> element [0 ]-> str ,
725+ (int )r3 -> element [0 ]-> len ,
726+ (unsigned short )r3 -> element [1 ]-> integer , low , 1 );
727+ cluster_node_add_slave (master , slave );
728+ }
729+ } else {
730+ master = pnode ;
731731 }
732732
733733 // Attach this node to each slot in the range
0 commit comments