diff -up bind-9.6.0rc1/lib/dns/dispatch.c.rh475120 bind-9.6.0rc1/lib/dns/dispatch.c --- bind-9.6.0rc1/lib/dns/dispatch.c.rh475120 2008-11-13 00:10:57.000000000 +0100 +++ bind-9.6.0rc1/lib/dns/dispatch.c 2008-12-09 15:06:18.000000000 +0100 @@ -2702,6 +2702,15 @@ get_udpsocket(dns_dispatchmgr_t *mgr, dn * If this fails 1024 times, we then ask the kernel for * choosing one. */ + } else { + /* Allow to reuse address for non-random ports */ + result = open_socket(sockmgr, localaddr, + ISC_SOCKET_REUSEADDRESS, &sock); + + if (result == ISC_R_SUCCESS) + *sockp = sock; + + return (result); } memset(held, 0, sizeof(held));