2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-31 06:25:31 +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 2424. [port] configure now probes for a working epoll
implementation. Allow the use of kqueue, implementation. Allow the use of kqueue,
epoll and /dev/poll to be selected at compile epoll and /dev/poll to be selected at compile

View File

@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE. * 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 */ /*! \file */
@@ -2654,6 +2654,23 @@ dispatch_createudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr,
0xffffU); 0xffffU);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
goto deallocate_dispatch; 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->socktype = isc_sockettype_udp;
disp->socket = sock; disp->socket = sock;