]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
2509. [bug] Specifying a fixed query source port was broken.
authorMark Andrews <marka@isc.org>
Wed, 10 Dec 2008 12:47:05 +0000 (12:47 +0000)
committerMark Andrews <marka@isc.org>
Wed, 10 Dec 2008 12:47:05 +0000 (12:47 +0000)
                        [RT #19051]

CHANGES
lib/dns/dispatch.c

diff --git a/CHANGES b/CHANGES
index 7947a0adbb2985be9768d15d27e9c7acf8fa4773..f4316d3327b043500ed3c2cf26d767378a223a34 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+2509.  [bug]           Specifying a fixed query source port was broken.
+                       [RT #19051]
+
 2506.  [port]          solaris: Check at configure time if 
                        hack_shutup_pthreadonceinit is needed. [RT #19037]
 
index 794cdb5e5aac93a1deefa1040427c994ab15c645..17269e8c7cd1ed516fd9d7627d537abfe4ce90f4 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: dispatch.c,v 1.116.18.37 2008/09/04 00:24:41 jinmei Exp $ */
+/* $Id: dispatch.c,v 1.116.18.38 2008/12/10 12:47:05 marka Exp $ */
 
 /*! \file */
 
@@ -2569,6 +2569,15 @@ get_udpsocket(dns_dispatchmgr_t *mgr, dns_dispatch_t *disp,
                 * 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));