]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MAJOR: dns: restart sockets after fork()
authorBaptiste Assmann <bedis9@gmail.com>
Thu, 2 Feb 2017 22:14:51 +0000 (23:14 +0100)
committerWilly Tarreau <w@1wt.eu>
Fri, 3 Feb 2017 06:22:06 +0000 (07:22 +0100)
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]

src/haproxy.c

index 6a8b5c2450c380c6d14e61aa944a0c5aac81e03c..41be9cdfa3d730e93542da9a4ea418f585406306 100644 (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.