BUG/MINOR: server: make srv_alloc_lb() allocate lb_nodes for consistent hash

The test in srv_alloc_lb() to allocate the lb_nodes[] array used in the
consistent hash was incorrect, it wouldn't do it for consistent hash and
could do it for regular random.

No backport is needed as this was added for dynamic servers in 2.4-dev by
commit f99f77a50 ("MEDIUM: server: implement 'add server' cli command").
This commit is contained in:
Willy Tarreau 2021-04-20 11:37:45 +02:00
parent 942b89f7dc
commit dcb121fd9c

View File

@ -4299,7 +4299,8 @@ static int srv_alloc_lb(struct server *sv, struct proxy *be)
sv->lb_nodes_tot = sv->uweight * BE_WEIGHT_SCALE;
sv->lb_nodes_now = 0;
if ((be->lbprm.algo & BE_LB_PARM) == BE_LB_RR_RANDOM) {
if (((be->lbprm.algo & (BE_LB_KIND | BE_LB_PARM)) == (BE_LB_KIND_RR | BE_LB_RR_RANDOM)) ||
((be->lbprm.algo & (BE_LB_KIND | BE_LB_HASH_TYPE)) == (BE_LB_KIND_HI | BE_LB_HASH_CONS))) {
sv->lb_nodes = calloc(sv->lb_nodes_tot, sizeof(*sv->lb_nodes));
if (!sv->lb_nodes)