From: William Lallemand Date: Mon, 18 Dec 2023 11:35:35 +0000 (+0100) Subject: BUG/MINOR: resolvers: default resolvers fails when network not configured X-Git-Tag: v2.9.2~37 X-Git-Url: http://git.haproxy.org/?a=commitdiff_plain;h=4924221;p=haproxy-2.9.git BUG/MINOR: resolvers: default resolvers fails when network not configured Bug #1740 was opened again, this time a user is complaining about the "can't create socket for nameserver". This can happen if the resolv.conf file contains a class of address which was not configured on the machine, for example IPv6. The fix does the same as b10b1196b ("MINOR: resolvers: shut the warning when "default" resolvers is implicit"), and uses the "resolvers->conf.implicit" variable to emit the error. Though it is not needed to convert the explicit behavior with a ERR_WARN, because this is supposed to be an unrecoverable error, unlike the connect(). Should fix issue #1740. Must be backported were b10b1196b was backported. (as far as 2.6) (cherry picked from commit 0d2ebb53f752502137479c9e753a96046d3254ab) Signed-off-by: Willy Tarreau --- diff --git a/src/resolvers.c b/src/resolvers.c index 4ef55b9..3275cd2 100644 --- a/src/resolvers.c +++ b/src/resolvers.c @@ -2567,9 +2567,11 @@ static int resolvers_finalize_config(void) if (ns->dgram) { /* Check nameserver info */ if ((fd = socket(ns->dgram->conn.addr.to.ss_family, SOCK_DGRAM, IPPROTO_UDP)) == -1) { - ha_alert("resolvers '%s': can't create socket for nameserver '%s'.\n", - resolvers->id, ns->id); - err_code |= (ERR_ALERT|ERR_ABORT); + if (!resolvers->conf.implicit) { /* emit a warning only if it was configured manually */ + ha_alert("resolvers '%s': can't create socket for nameserver '%s'.\n", + resolvers->id, ns->id); + err_code |= (ERR_ALERT|ERR_ABORT); + } continue; } if (connect(fd, (struct sockaddr*)&ns->dgram->conn.addr.to, get_addr_len(&ns->dgram->conn.addr.to)) == -1) {