Don't enable SO_REUSEADDR on outgoing UDP sockets
Currently, the outgoing UDP sockets have enabled SO_REUSEADDR (SO_REUSEPORT on BSDs) which allows multiple UDP sockets to bind to the same address+port. There's one caveat though - only a single (the last one) socket is going to receive all the incoming traffic. This in turn could lead to incoming DNS message matching to invalid dns_dispatch and getting dropped. Disable setting the SO_REUSEADDR on the outgoing UDP sockets. This needs to be done explicitly because `uv_udp_open()` silently enables the option on the socket.
This commit is contained in:
@@ -247,7 +247,7 @@ setup_ephemeral_port(isc_sockaddr_t *addr, sa_family_t family) {
|
||||
return (r);
|
||||
}
|
||||
|
||||
result = isc__nm_socket_reuse(fd);
|
||||
result = isc__nm_socket_reuse(fd, 1);
|
||||
if (result != ISC_R_SUCCESS && result != ISC_R_NOTIMPLEMENTED) {
|
||||
fprintf(stderr,
|
||||
"setup_ephemeral_port: isc__nm_socket_reuse(): %s",
|
||||
|
||||
Reference in New Issue
Block a user