From 4dce5923c8754e755d24eae87c16844da23d6141 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Mon, 30 Mar 2020 13:54:42 +0200 Subject: [PATCH] MINOR: checks: Add the default option for tcp-check connect rules With this option, it is possible to open a connection from a tcp-check connect rule using all parameter of the server line, like any other healthcheck. For now, this parameter is exclusive with all other option for a tcp-check connect rule. --- doc/configuration.txt | 3 +++ src/checks.c | 11 +++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/doc/configuration.txt b/doc/configuration.txt index 327399dd0..bc5f88ad2 100644 --- a/doc/configuration.txt +++ b/doc/configuration.txt @@ -9818,6 +9818,9 @@ tcp-check connect [params*] They are optional and can be used to describe how HAProxy should open and use the TCP connection. + default Use default options of the server line to do the health + checks. This parameter is exclusive with all other options. + port if not set, check port or server port is used. It tells HAProxy where to open the connection to. must be a valid TCP port source integer, from 1 to 65535. diff --git a/src/checks.c b/src/checks.c index e39603640..7ac661149 100644 --- a/src/checks.c +++ b/src/checks.c @@ -4099,7 +4099,14 @@ static struct tcpcheck_rule *parse_tcpcheck_connect(char **args, int cur_arg, st cur_arg++; while (*(args[cur_arg])) { - if (strcmp(args[cur_arg], "port") == 0) { + if (strcmp(args[cur_arg], "default") == 0) { + if (cur_arg != 2 || *(args[cur_arg+1])) { + memprintf(errmsg, "'%s' is exclusive with all other options", args[cur_arg]); + goto error; + } + conn_opts = TCPCHK_OPT_DEFAULT_CONNECT; + } + else if (strcmp(args[cur_arg], "port") == 0) { if (!*(args[cur_arg+1])) { memprintf(errmsg, "'%s' expects a port number as argument.", args[cur_arg]); goto error; @@ -4168,7 +4175,7 @@ static struct tcpcheck_rule *parse_tcpcheck_connect(char **args, int cur_arg, st #ifdef USE_OPENSSL ", 'ssl', 'sni', 'alpn'" #endif /* USE_OPENSSL */ - " or 'via-socks4', 'linger' but got '%s' as argument.", + " or 'via-socks4', 'linger', 'default' but got '%s' as argument.", args[cur_arg]); goto error; }