BUG/MINOR: server: explicitly set "none" init-addr for dynamic servers

Define srv.init_addr_methods to SRV_IADDR_NONE on 'add server' CLI
handler. This explicitly states that no resolution will be made on the
server creation.

This is not a real bug as the default value (SRV_IADDR_END) has the same
effect in practice. However the intent is clearer and prevent to use the
default "libc,last" by mistake which cannot execute on runtime (blocking
call + file access via gethostbyname/getaddrinfo).

The doc is also updated to reflect this limitation.

This should be backported up to 2.4.
This commit is contained in:
Amaury Denoyelle 2021-06-10 17:34:10 +02:00
parent 2a77c62c18
commit efbf35caf9
2 changed files with 11 additions and 0 deletions

View File

@ -1466,6 +1466,10 @@ add server <backend>/<server> [args]*
used to configure the server behavior. Also note that no settings will be
reused from an hypothetical 'default-server' statement in the same backend.
Currently a dynamic server is statically initialized with the "none"
init-addr method. This means that no resolution will be undertaken if a FQDN
is specified as an address, even if the server creation will be validated.
Here is the list of the currently supported keywords :
- backup

View File

@ -4375,6 +4375,13 @@ static int cli_parse_add_server(char **args, char *payload, struct appctx *appct
if (errcode)
goto out;
/* A dynamic server does not currently support resolution.
*
* Initialize it explicitly to the "none" method to ensure no
* resolution will ever be executed.
*/
srv->init_addr_methods = SRV_IADDR_NONE;
if (srv->mux_proto) {
if (!conn_get_best_mux_entry(srv->mux_proto->token, PROTO_SIDE_BE, be->mode)) {
ha_alert("MUX protocol is not usable for server.\n");