BUG/MAJOR: dns: restart sockets after fork()

UDP sockets used to send DNS queries are created before fork happens and
this is a big problem because all the processes (in case of a
configuration starting multiple processes) share the same socket. Some
processes may consume responses dedicated to an other one, some servers
may be disabled, some IPs changed, etc...

As a workaround, this patch close the existing socket and create a new
one after the fork() has happened.

[wt: backport this to 1.7]
This commit is contained in:
Baptiste Assmann 2017-02-02 23:14:51 +01:00 committed by Willy Tarreau
parent 5cd1b9222e
commit 26c6eb8383

View File

@ -1950,6 +1950,10 @@ int main(int argc, char **argv)
fork_poller();
}
/* initialize structures for name resolution */
if (!dns_init_resolvers(1))
exit(1);
protocol_enable_all();
/*
* That's it : the central polling loop. Run until we stop.