From 7d0c143185bd2632cc3ea4c2ba48c00de8f157af Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 12 Feb 2021 12:29:28 +0100 Subject: [PATCH] MINOR: cfgparse: move defproxy to cfgparse-listen as a static We don't want to expose this one anymore as we'll soon keep multiple default proxies. Let's move it inside the parser which is the only place which still uses it, and initialize it on the fly once needed instead of doing it at boot time. --- include/haproxy/cfgparse.h | 1 - src/cfgparse-listen.c | 9 +++++++++ src/cfgparse.c | 1 - src/haproxy.c | 3 --- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/include/haproxy/cfgparse.h b/include/haproxy/cfgparse.h index a1476fad68..186ecf75b7 100644 --- a/include/haproxy/cfgparse.h +++ b/include/haproxy/cfgparse.h @@ -84,7 +84,6 @@ extern int cfg_maxconn; extern char *cfg_scope; extern struct cfg_kw_list cfg_keywords; extern char *cursection; -extern struct proxy defproxy; int cfg_parse_global(const char *file, int linenum, char **args, int inv); int cfg_parse_listen(const char *file, int linenum, char **args, int inv); diff --git a/src/cfgparse-listen.c b/src/cfgparse-listen.c index edcc041382..ffe7931563 100644 --- a/src/cfgparse-listen.c +++ b/src/cfgparse-listen.c @@ -33,6 +33,9 @@ #include #include + +static struct proxy defproxy; /* fake proxy used to assign default values on all instances */ + /* Report a warning if a rule is placed after a 'tcp-request session' rule. * Return 1 if the warning has been emitted, otherwise 0. */ @@ -177,6 +180,12 @@ int cfg_parse_listen(const char *file, int linenum, char **args, int kwm) char *errmsg = NULL; struct bind_conf *bind_conf; + if (defproxy.obj_type != OBJ_TYPE_PROXY) { + /* defproxy not initialized yet */ + init_new_proxy(&defproxy); + proxy_preset_defaults(&defproxy); + } + if (strcmp(args[0], "listen") == 0) rc = PR_CAP_LISTEN; else if (strcmp(args[0], "frontend") == 0) diff --git a/src/cfgparse.c b/src/cfgparse.c index 9f76878f07..0ddbab0008 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -89,7 +89,6 @@ struct list sections = LIST_HEAD_INIT(sections); struct list postparsers = LIST_HEAD_INIT(postparsers); char *cursection = NULL; -struct proxy defproxy = { }; /* fake proxy used to assign default values on all instances */ int cfg_maxpconn = 0; /* # of simultaneous connections per proxy (-N) */ int cfg_maxconn = 0; /* # of simultaneous connections, (-n) */ char *cfg_scope = NULL; /* the current scope during the configuration parsing */ diff --git a/src/haproxy.c b/src/haproxy.c index 1bac1c51fd..69ddb90356 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -1822,9 +1822,6 @@ static void init(int argc, char **argv) global.maxsock = 10; /* reserve 10 fds ; will be incremented by socket eaters */ - init_new_proxy(&defproxy); - proxy_preset_defaults(&defproxy); - /* in wait mode, we don't try to read the configuration files */ if (!(global.mode & MODE_MWORKER_WAIT)) { char *env_cfgfiles = NULL; -- 2.47.3