From: Christopher Faulet Date: Thu, 9 Apr 2020 13:58:50 +0000 (+0200) Subject: MINOR: proxy/checks: Move parsing of external-check option in checks.c X-Git-Tag: v2.2-dev7~111 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6f5579160ac6e3860d610656c44aefbc246d0d8c;p=thirdparty%2Fhaproxy.git MINOR: proxy/checks: Move parsing of external-check option in checks.c Parsing of the proxy directive "option external-check" have been moved in checks.c. --- diff --git a/include/proto/checks.h b/include/proto/checks.h index 563e01f4c1..7fc8497602 100644 --- a/include/proto/checks.h +++ b/include/proto/checks.h @@ -87,6 +87,8 @@ int proxy_parse_spop_check_opt(char **args, int cur_arg, struct proxy *curpx, st const char *file, int line); int proxy_parse_httpchk_opt(char **args, int cur_arg, struct proxy *curpx, struct proxy *defpx, const char *file, int line); +int proxy_parse_external_check_opt(char **args, int cur_arg, struct proxy *curpx, struct proxy *defpx, + const char *file, int line); int set_srv_agent_send(struct server *srv, const char *send); diff --git a/src/cfgparse-listen.c b/src/cfgparse-listen.c index 7b33eb06f7..ddc7ba2d35 100644 --- a/src/cfgparse-listen.c +++ b/src/cfgparse-listen.c @@ -2375,12 +2375,8 @@ stats_error_parsing: goto out; } else if (!strcmp(args[1], "external-check")) { - /* excute an external command to check servers' health */ - free(curproxy->check_req); - curproxy->check_req = NULL; - curproxy->options2 &= ~PR_O2_CHK_ANY; - curproxy->options2 |= PR_O2_EXT_CHK; - if (alertif_too_many_args_idx(0, 1, file, linenum, args, &err_code)) + err_code |= proxy_parse_external_check_opt(args, 0, curproxy, &defproxy, file, linenum); + if (err_code & ERR_FATAL) goto out; } else if (!strcmp(args[1], "forwardfor")) { diff --git a/src/checks.c b/src/checks.c index ad72e08afe..cfe10f8fa8 100644 --- a/src/checks.c +++ b/src/checks.c @@ -6339,6 +6339,22 @@ int proxy_parse_httpchk_opt(char **args, int cur_arg, struct proxy *curpx, struc goto out; } +int proxy_parse_external_check_opt(char **args, int cur_arg, struct proxy *curpx, struct proxy *defpx, + const char *file, int line) +{ + int err_code = 0; + + free(curpx->check_req); + curpx->check_req = NULL; + curpx->options2 &= ~PR_O2_CHK_ANY; + curpx->options2 |= PR_O2_EXT_CHK; + if (alertif_too_many_args_idx(0, 1, file, line, args, &err_code)) + goto out; + + out: + return err_code; +} + /* Parse the "addr" server keyword */ static int srv_parse_addr(char **args, int *cur_arg, struct proxy *curpx, struct server *srv, char **errmsg)