From cf58dd79e39c966129f9e688b9220c2bd7065e15 Mon Sep 17 00:00:00 2001 From: Amaury Denoyelle Date: Mon, 8 Mar 2021 16:35:54 +0100 Subject: [PATCH] REORG: server: attach servers in parse_server Move server linked into proxy backend list outside of _srv_parse_init to parse_server. This is groundwork for dynamic servers support. There will be two differences in case of a dynamic server : - the server will be attached to the proxy list only at the very end of the operations when everything is ok - the server will be directly attached to the end of the server proxy list --- src/server.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/server.c b/src/server.c index 3fa384584..cbeae85d1 100644 --- a/src/server.c +++ b/src/server.c @@ -2405,9 +2405,6 @@ static int _srv_parse_init(struct server **srv, char **args, int *cur_arg, struc newsrv->tmpl_info.nb_high = tmpl_range_high; } - /* the servers are linked backwards first */ - newsrv->next = curproxy->srv; - curproxy->srv = newsrv; /* Note: for a server template, its id is its prefix. * This is a temporary id which will be used for server allocations to come * after parsing. @@ -2648,6 +2645,12 @@ int parse_server(const char *file, int linenum, char **args, struct proxy *curpr free(errmsg); } + /* the servers are linked backwards first */ + if (newsrv && !defsrv) { + newsrv->next = curproxy->srv; + curproxy->srv = newsrv; + } + if (err_code & ERR_CODE) goto out; @@ -2683,6 +2686,7 @@ int parse_server(const char *file, int linenum, char **args, struct proxy *curpr if (srv_tmpl) _srv_parse_tmpl_init(newsrv, curproxy); } + return 0; out: