From 732cd0dfa25dd77b6b348ffd5abd1a0bffb7a4ce Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Thu, 10 Jul 2025 10:48:05 +0200 Subject: [PATCH] CLEANUP: server: do not check for duplicates anymore in findserver() findserver() used to check for duplicate server names. These are no longer accepted in 3.3 so let's get rid of that test and simplify the code. Note that the function still only uses the list instead of the tree. --- src/proxy.c | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/src/proxy.c b/src/proxy.c index 4a1af2032..1c1e3722d 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -1378,34 +1378,23 @@ struct proxy *proxy_find_best_match(int cap, const char *name, int id, int *diff } /* - * This function finds a server with matching name within selected proxy. - * It also checks if there are more matching servers with - * requested name as this often leads into unexpected situations. + * This function returns the server with a matching name within selected proxy, + * or NULL if not found. */ -struct server *findserver(const struct proxy *px, const char *name) { - - struct server *cursrv, *target = NULL; +struct server *findserver(const struct proxy *px, const char *name) +{ + struct server *cursrv; if (!px) return NULL; for (cursrv = px->srv; cursrv; cursrv = cursrv->next) { - if (strcmp(cursrv->id, name) != 0) - continue; - - if (!target) { - target = cursrv; - continue; - } - - ha_alert("Refusing to use duplicated server '%s' found in proxy: %s!\n", - name, px->id); - - return NULL; + if (strcmp(cursrv->id, name) == 0) + return cursrv; } - return target; + return NULL; } /* This function checks that the designated proxy has no http directives -- 2.47.3