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 asb10b1196b
("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 wereb10b1196b
was backported. (as far as 2.6)
This commit is contained in:
parent
c5bde03a0a
commit
0d2ebb53f7
|
@ -2567,9 +2567,11 @@ static int resolvers_finalize_config(void)
|
||||||
if (ns->dgram) {
|
if (ns->dgram) {
|
||||||
/* Check nameserver info */
|
/* Check nameserver info */
|
||||||
if ((fd = socket(ns->dgram->conn.addr.to.ss_family, SOCK_DGRAM, IPPROTO_UDP)) == -1) {
|
if ((fd = socket(ns->dgram->conn.addr.to.ss_family, SOCK_DGRAM, IPPROTO_UDP)) == -1) {
|
||||||
|
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",
|
ha_alert("resolvers '%s': can't create socket for nameserver '%s'.\n",
|
||||||
resolvers->id, ns->id);
|
resolvers->id, ns->id);
|
||||||
err_code |= (ERR_ALERT|ERR_ABORT);
|
err_code |= (ERR_ALERT|ERR_ABORT);
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (connect(fd, (struct sockaddr*)&ns->dgram->conn.addr.to, get_addr_len(&ns->dgram->conn.addr.to)) == -1) {
|
if (connect(fd, (struct sockaddr*)&ns->dgram->conn.addr.to, get_addr_len(&ns->dgram->conn.addr.to)) == -1) {
|
||||||
|
|
Loading…
Reference in New Issue