]> 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 22:02:48 +0000 (22:02 +0000)
committerMark Andrews <marka@isc.org>
Wed, 10 Dec 2008 22:02:48 +0000 (22:02 +0000)
                        [RT #19051]

CHANGES
lib/dns/dispatch.c

diff --git a/CHANGES b/CHANGES
index 391dba0d624a1e28c74764f5835ee277cfc4f02e..43ae710cacc188aeffb06245f7964b608ad01d73 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+2509.  [bug]           Specifying a fixed query source port was broken.
+                       [RT #19051]
+
 2504.  [bug]           Address race condition in the socket code. [RT #18899]
 
        --- 9.5.1rc1 released ---
index 7328e0a035c525a7fad6ddb8e4c68a3e3a3bd1bd..528914681826c08626c2c3e4f257d72c06c0343e 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: dispatch.c,v 1.137.128.18 2008/09/04 00:23:59 jinmei Exp $ */
+/* $Id: dispatch.c,v 1.137.128.18.2.1 2008/12/10 22:02:48 marka Exp $ */
 
 /*! \file */
 
@@ -2588,6 +2588,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));