From dcb121fd9ce25ab5087fb45442bef24c031d2fe6 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 20 Apr 2021 11:37:45 +0200 Subject: [PATCH] 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"). --- src/server.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/server.c b/src/server.c index 3f05904fd..fb7b750c7 100644 --- a/src/server.c +++ b/src/server.c @@ -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)