Bug 194954

Summary: [patch] [local_unbound] forward or stub addresses with same address but different port number are not tried
Product: Base System Reporter: Igor Pavlov <igor.arabesc.pavlov>
Component: binAssignee: Dag-Erling Smørgrav <des>
Status: Closed FIXED    
Severity: Affects Some People CC: des
Priority: Normal    
Version: 10.0-RELEASE   
Hardware: Any   
OS: Any   
URL: https://forums.freebsd.org/threads/failover-and-load-balancing-dns-queries-with-unbound.48872/#post-273471

Description Igor Pavlov 2014-11-11 23:05:44 UTC
Bug is confirmed by W.C.A. Wijngaards, he has provided a fix:

Index: iterator/iter_delegpt.c
===================================================================
- --- iterator/iter_delegpt.c   (revision 3256)
+++ iterator/iter_delegpt.c     (working copy)
@@ -147,7 +147,9 @@
 {
        struct delegpt_addr* p = dp->target_list;
        while(p) {
- -             if(sockaddr_cmp_addr(addr, addrlen, &p->addr, p->addrlen)==0) {
+               if(sockaddr_cmp_addr(addr, addrlen, &p->addr, p->addrlen)==0
+                       && ((struct sockaddr_in*)addr)->sin_port ==
+                          ((struct sockaddr_in*)&p->addr)->sin_port) {
                        return p;
                }
                p = p->next_target;
Comment 1 Dag-Erling Smørgrav freebsd_committer 2015-10-14 18:21:14 UTC
Fixed by r276605 in head (2015-01-03) and r285206 in stable/10 (2015-07-06).