]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
REORG: move init_default_instance() to proxy.c and pass it the defproxy pointer
authorWilly Tarreau <w@1wt.eu>
Fri, 12 Feb 2021 07:19:01 +0000 (08:19 +0100)
committerWilly Tarreau <w@1wt.eu>
Fri, 12 Feb 2021 15:23:46 +0000 (16:23 +0100)
init_default_instance() was still left in cfgparse.c which is not the
best place to pre-initialize a proxy. Let's place it in proxy.c just
after init_new_proxy(), take this opportunity for renaming it to
proxy_preset_defaults() and taking out init_new_proxy() from it, and
let's pass it the pointer to the default proxy to be initialized instead
of implicitly assuming defproxy. We'll soon be able to exploit this.
Only two call places had to be updated.

include/haproxy/cfgparse.h
include/haproxy/proxy.h
src/cfgparse-listen.c
src/cfgparse.c
src/haproxy.c
src/proxy.c
src/server.c

index ecb5ffd1e4c90d6c5e7e29e2ad8840fe54149ca9..a1476fad68d8677271844d28f783bb37bba08332 100644 (file)
@@ -93,7 +93,6 @@ int cfg_parse_track_sc_num(unsigned int *track_sc_num,
 int readcfgfile(const char *file);
 void cfg_register_keywords(struct cfg_kw_list *kwl);
 void cfg_unregister_keywords(struct cfg_kw_list *kwl);
-void init_default_instance();
 int check_config_validity();
 int str2listener(char *str, struct proxy *curproxy, struct bind_conf *bind_conf, const char *file, int line, char **err);
 int str2receiver(char *str, struct proxy *curproxy, struct bind_conf *bind_conf, const char *file, int line, char **err);
index f63f4a2cdb55cc2b0e5fecf7c0846a850558310b..dfaf9962f921b3a099fbba70315ee8a1145ca121 100644 (file)
@@ -56,6 +56,7 @@ struct proxy *proxy_find_best_match(int cap, const char *name, int id, int *diff
 struct server *findserver(const struct proxy *px, const char *name);
 int proxy_cfg_ensure_no_http(struct proxy *curproxy);
 void init_new_proxy(struct proxy *p);
+void proxy_preset_defaults(struct proxy *defproxy);
 int get_backend_server(const char *bk_name, const char *sv_name,
                       struct proxy **bk, struct server **sv);
 void proxy_capture_error(struct proxy *proxy, int is_back,
index 80b845a71d1542ae676437d560825a3ed0171737..cdc3f5bf4bb8c68e807531e5e6f15c925643e5b4 100644 (file)
@@ -526,7 +526,8 @@ int cfg_parse_listen(const char *file, int linenum, char **args, int kwm)
                deinit_proxy_tcpcheck(&defproxy);
 
                /* we cannot free uri_auth because it might already be used */
-               init_default_instance();
+               init_new_proxy(&defproxy);
+               proxy_preset_defaults(&defproxy);
                curproxy = &defproxy;
                curproxy->conf.args.file = curproxy->conf.file = strdup(file);
                curproxy->conf.args.line = curproxy->conf.line = linenum;
index 03405a40cb1f600eff397e57560862c08c9a9f73..9f76878f0776a8a98428b05f06e66beeaf62f26f 100644 (file)
@@ -422,48 +422,6 @@ unsigned long parse_cpu_set(const char **args, unsigned long *cpu_set, char **er
 }
 #endif
 
-void init_default_instance()
-{
-       init_new_proxy(&defproxy);
-       defproxy.mode = PR_MODE_TCP;
-       defproxy.disabled = 0;
-       defproxy.maxconn = cfg_maxpconn;
-       defproxy.conn_retries = CONN_RETRIES;
-       defproxy.redispatch_after = 0;
-       defproxy.options = PR_O_REUSE_SAFE;
-       defproxy.max_out_conns = MAX_SRV_LIST;
-
-       defproxy.defsrv.check.inter = DEF_CHKINTR;
-       defproxy.defsrv.check.fastinter = 0;
-       defproxy.defsrv.check.downinter = 0;
-       defproxy.defsrv.agent.inter = DEF_CHKINTR;
-       defproxy.defsrv.agent.fastinter = 0;
-       defproxy.defsrv.agent.downinter = 0;
-       defproxy.defsrv.check.rise = DEF_RISETIME;
-       defproxy.defsrv.check.fall = DEF_FALLTIME;
-       defproxy.defsrv.agent.rise = DEF_AGENT_RISETIME;
-       defproxy.defsrv.agent.fall = DEF_AGENT_FALLTIME;
-       defproxy.defsrv.check.port = 0;
-       defproxy.defsrv.agent.port = 0;
-       defproxy.defsrv.maxqueue = 0;
-       defproxy.defsrv.minconn = 0;
-       defproxy.defsrv.maxconn = 0;
-       defproxy.defsrv.max_reuse = -1;
-       defproxy.defsrv.max_idle_conns = -1;
-       defproxy.defsrv.pool_purge_delay = 5000;
-       defproxy.defsrv.slowstart = 0;
-       defproxy.defsrv.onerror = DEF_HANA_ONERR;
-       defproxy.defsrv.consecutive_errors_limit = DEF_HANA_ERRLIMIT;
-       defproxy.defsrv.uweight = defproxy.defsrv.iweight = 1;
-
-       defproxy.email_alert.level = LOG_ALERT;
-       defproxy.load_server_state_from_file = PR_SRV_STATE_FILE_UNSPEC;
-#if defined(USE_QUIC)
-       quic_transport_params_init(&defproxy.defsrv.quic_params, 0);
-#endif
-
-}
-
 /* Allocate and initialize the frontend of a "peers" section found in
  * file <file> at line <linenum> with <id> as ID.
  * Return 0 if succeeded, -1 if not.
index 417266679d63cb766e5cead9f7ba69c9235d78ec..1bac1c51fd65c0739a6290e771f0c3a93d5a5ac8 100644 (file)
@@ -1822,7 +1822,8 @@ static void init(int argc, char **argv)
 
        global.maxsock = 10; /* reserve 10 fds ; will be incremented by socket eaters */
 
-       init_default_instance();
+       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)) {
index f06b5d53765d36e5a21c10664f19a35817949234..009ebbc125c37ac20b1140cf6c87f2f64ebcc807 100644 (file)
@@ -1051,6 +1051,47 @@ void init_new_proxy(struct proxy *p)
        HA_RWLOCK_INIT(&p->lock);
 }
 
+/* Preset default settings onto proxy <defproxy>. */
+void proxy_preset_defaults(struct proxy *defproxy)
+{
+       defproxy->mode = PR_MODE_TCP;
+       defproxy->disabled = 0;
+       defproxy->maxconn = cfg_maxpconn;
+       defproxy->conn_retries = CONN_RETRIES;
+       defproxy->redispatch_after = 0;
+       defproxy->options = PR_O_REUSE_SAFE;
+       defproxy->max_out_conns = MAX_SRV_LIST;
+
+       defproxy->defsrv.check.inter = DEF_CHKINTR;
+       defproxy->defsrv.check.fastinter = 0;
+       defproxy->defsrv.check.downinter = 0;
+       defproxy->defsrv.agent.inter = DEF_CHKINTR;
+       defproxy->defsrv.agent.fastinter = 0;
+       defproxy->defsrv.agent.downinter = 0;
+       defproxy->defsrv.check.rise = DEF_RISETIME;
+       defproxy->defsrv.check.fall = DEF_FALLTIME;
+       defproxy->defsrv.agent.rise = DEF_AGENT_RISETIME;
+       defproxy->defsrv.agent.fall = DEF_AGENT_FALLTIME;
+       defproxy->defsrv.check.port = 0;
+       defproxy->defsrv.agent.port = 0;
+       defproxy->defsrv.maxqueue = 0;
+       defproxy->defsrv.minconn = 0;
+       defproxy->defsrv.maxconn = 0;
+       defproxy->defsrv.max_reuse = -1;
+       defproxy->defsrv.max_idle_conns = -1;
+       defproxy->defsrv.pool_purge_delay = 5000;
+       defproxy->defsrv.slowstart = 0;
+       defproxy->defsrv.onerror = DEF_HANA_ONERR;
+       defproxy->defsrv.consecutive_errors_limit = DEF_HANA_ERRLIMIT;
+       defproxy->defsrv.uweight = defproxy->defsrv.iweight = 1;
+
+       defproxy->email_alert.level = LOG_ALERT;
+       defproxy->load_server_state_from_file = PR_SRV_STATE_FILE_UNSPEC;
+#if defined(USE_QUIC)
+       quic_transport_params_init(&defproxy->defsrv.quic_params, 0);
+#endif
+}
+
 /* to be called under the proxy lock after stopping some listeners. This will
  * automatically update the p->disabled flag after stopping the last one, and
  * will emit a log indicating the proxy's condition. The function is idempotent
index e13c0df7d4e8dd491f24a77cc9272248b4697413..a77579abeff290fc22cb0574fcfcba3dda250f75 100644 (file)
@@ -1784,7 +1784,7 @@ struct server *new_server(struct proxy *proxy)
 #endif
 
        /* please don't put default server settings here, they are set in
-        * init_default_instance().
+        * proxy_preset_defaults().
         */
        return srv;
 }