While trying to fix some consistency problem with the config file/cli (e.g. check-port cli command does not set the flag), we realised checkport flag was not necessarily needed. Indeed tcpcheck uses service port as the last choice if check.port is zero. So we can assume if check.port is zero, it means it was never set by the user, regardless if it is by the cli or config file. In the longterm this will avoid to introduce a new consistency issue if we forget to set the flag.
in the same manner of checkport flag, we don't really need checkaddr flag. We can assume if checkaddr is not set, it means it was never set by the user or config. Signed-off-by: William Dauchy <[email protected]> --- include/haproxy/server-t.h | 2 -- src/check.c | 2 -- src/dns.c | 3 +-- src/server.c | 7 ++----- 4 files changed, 3 insertions(+), 11 deletions(-) diff --git a/include/haproxy/server-t.h b/include/haproxy/server-t.h index e42b1c7ed..45f41959c 100644 --- a/include/haproxy/server-t.h +++ b/include/haproxy/server-t.h @@ -138,8 +138,6 @@ enum srv_initaddr { #define SRV_F_NON_STICK 0x0004 /* never add connections allocated to this server to a stick table */ #define SRV_F_USE_NS_FROM_PP 0x0008 /* use namespace associated with connection if present */ #define SRV_F_FORCED_ID 0x0010 /* server's ID was forced in the configuration */ -#define SRV_F_CHECKADDR 0x0020 /* this server has a check addr configured */ -#define SRV_F_CHECKPORT 0x0040 /* this server has a check port configured */ #define SRV_F_AGENTADDR 0x0080 /* this server has a agent addr configured */ #define SRV_F_COOKIESET 0x0100 /* this server has a cookie configured, so don't generate dynamic cookies */ #define SRV_F_FASTOPEN 0x0200 /* Use TCP Fast Open to connect to server */ diff --git a/src/check.c b/src/check.c index 879fe84ce..e24050ff2 100644 --- a/src/check.c +++ b/src/check.c @@ -1527,7 +1527,6 @@ static int srv_parse_addr(char **args, int *cur_arg, struct proxy *curpx, struct } srv->check.addr = srv->agent.addr = *sk; - srv->flags |= SRV_F_CHECKADDR; srv->flags |= SRV_F_AGENTADDR; out: @@ -2050,7 +2049,6 @@ static int srv_parse_check_port(char **args, int *cur_arg, struct proxy *curpx, global.maxsock++; srv->check.port = atol(args[*cur_arg+1]); - srv->flags |= SRV_F_CHECKPORT; out: return err_code; diff --git a/src/dns.c b/src/dns.c index 8c97df46b..8fc9089e7 100644 --- a/src/dns.c +++ b/src/dns.c @@ -712,8 +712,7 @@ static void dns_check_dns_response(struct dns_resolution *res) srv->svc_port = item->port; srv->flags &= ~SRV_F_MAPPORTS; - if ((srv->check.state & CHK_ST_CONFIGURED) && - !(srv->flags & SRV_F_CHECKPORT)) + if (!srv->check.port) srv->check.port = item->port; if (!srv->dns_opts.ignore_weight) { diff --git a/src/server.c b/src/server.c index d8216058f..1fd71e403 100644 --- a/src/server.c +++ b/src/server.c @@ -1660,8 +1660,6 @@ static void srv_settings_cpy(struct server *srv, struct server *src, int srv_tmp srv->flags |= src->flags; srv->do_check = src->do_check; srv->do_agent = src->do_agent; - if (srv->check.port) - srv->flags |= SRV_F_CHECKPORT; srv->check.inter = src->check.inter; srv->check.fastinter = src->check.fastinter; srv->check.downinter = src->check.downinter; @@ -2985,8 +2983,7 @@ static void srv_update_state(struct server *srv, int version, char **params) } /* configure check.port accordingly */ - if ((srv->check.state & CHK_ST_CONFIGURED) && - !(srv->flags & SRV_F_CHECKPORT)) + if (!srv->check.port) srv->check.port = port_check; /* Unset SRV_F_MAPPORTS for SRV records. @@ -3673,7 +3670,7 @@ const char *update_server_addr_port(struct server *s, const char *addr, const ch * we're switching from a fixed port to a SRV_F_MAPPORTS (mapped) port * prevent PORT change if check doesn't have it's dedicated port while switching * to port mapping */ - if ((s->check.state & CHK_ST_CONFIGURED) && !(s->flags & SRV_F_CHECKPORT)) { + if (!s->check.port) { chunk_appendf(msg, "can't change <port> to port map because it is incompatible with current health check port configuration (use 'port' statement from the 'server' directive."); goto out; } -- 2.30.0

