2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 14:07:59 +00:00

2425. [bug] named didn't detect unavailable query source addresses

at load time. [RT #18536]
This commit is contained in:
Tatuya JINMEI 神明達哉
2008-08-26 02:04:20 +00:00
parent e6a6d0778c
commit ebacb7908a
2 changed files with 21 additions and 1 deletions

View File

@@ -1,3 +1,6 @@
2425. [bug] named didn't detect unavailable query source addresses
at load time. [RT #18536]
2424. [port] configure now probes for a working epoll
implementation. Allow the use of kqueue,
epoll and /dev/poll to be selected at compile

View File

@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: dispatch.c,v 1.152 2008/08/15 17:47:18 jinmei Exp $ */
/* $Id: dispatch.c,v 1.153 2008/08/26 02:04:20 jinmei Exp $ */
/*! \file */
@@ -2654,6 +2654,23 @@ dispatch_createudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr,
0xffffU);
if (result != ISC_R_SUCCESS)
goto deallocate_dispatch;
} else {
isc_sockaddr_t sa_any;
/*
* For dispatches using exclusive sockets with a specific
* source address, we only check if the specified address is
* available on the system. Query sockets will be created later
* on demand.
*/
isc_sockaddr_anyofpf(&sa_any, isc_sockaddr_pf(localaddr));
if (!isc_sockaddr_eqaddr(&sa_any, localaddr)) {
result = open_socket(sockmgr, localaddr, 0, &sock);
if (sock != NULL)
isc_socket_detach(&sock);
if (result != ISC_R_SUCCESS)
goto deallocate_dispatch;
}
}
disp->socktype = isc_sockettype_udp;
disp->socket = sock;