]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: server: make "agent-addr" work on default-server line
authorWilly Tarreau <w@1wt.eu>
Wed, 11 Dec 2019 14:43:45 +0000 (15:43 +0100)
committerWilly Tarreau <w@1wt.eu>
Wed, 11 Dec 2019 14:43:45 +0000 (15:43 +0100)
As reported in issue #408, "agent-addr" doesn't work on default-server
lines. This is due to the transcription of the old "addr" option in commit
6e5e0d8f9e ("MINOR: server: Make 'default-server' support 'addr' keyword.")
which correctly assigns it to the check.addr and agent.addr fields, but
which also copies the default check.addr into both the check's and the
agent's addr fields. Thus the default agent's address is never used.

This fix makes sure to copy the check from the check and the agent from
the agent. However it's worth noting that if "addr" is specified on the
server line, it will still overwrite both the check and the agent's
addresses.

This must be backported as far as 1.8.

src/server.c

index ac7ea37f20db3fb324cfbdfa50b8f99e51716458..3465db97c3cc4e1ffe325c44cc2111fd3b8b5417 100644 (file)
@@ -1739,7 +1739,8 @@ static void srv_settings_cpy(struct server *srv, struct server *src, int srv_tmp
                srv->cklen  = src->cklen;
        }
        srv->use_ssl                  = src->use_ssl;
-       srv->check.addr = srv->agent.addr = src->check.addr;
+       srv->check.addr               = src->check.addr;
+       srv->agent.addr               = src->agent.addr;
        srv->check.use_ssl            = src->check.use_ssl;
        srv->check.port               = src->check.port;
        srv->check.sni                = src->check.sni;