Skip to content

Commit d738e4d

Browse files
committed
dnsx/alg: unconditionally update realip=>alg ptr map
1 parent b9f1fda commit d738e4d

1 file changed

Lines changed: 9 additions & 17 deletions

File tree

intra/dnsx/alg.go

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1566,37 +1566,29 @@ func (t *dnsgateway) registerLocked(q, tid, uid string, algip4, algip6 netip.Add
15661566
continue
15671567
}
15681568
if prevans := t.alg[k]; prevans != nil {
1569-
// merge x into prevam
1569+
// merge x into prevans
15701570
prevans.merge(x)
1571+
x = prevans
15711572
} else {
15721573
t.alg[k] = x
15731574
t.nat[ip] = x.baseans
15741575
newEntry = true
15751576
}
1577+
// am.ips.realips() may return nil; ex: when preset fixed ips are used
1578+
x.ips.each(func(ip netip.Addr) {
1579+
// existing am is merged into am4/am6 by t.alg above
1580+
// register mapping from realip -> algip+qname (ptr)
1581+
1582+
t.ptr[ip] = x.baseans
1583+
})
15761584
didRegister = true
15771585
}
1578-
15791586
logeif(!didRegister)("alg: algips (reg? %t / new? %t) (alg: %s+%s => real: %s) for %s@%s[%s]; real? %d, sec? %d; until (ans: %s / xips: %s)",
15801587
didRegister, newEntry, algip4, algip6, realips, q, tid, uid, len(realips), len(secres.ips), time.Until(ansttl), time.Until(xipsttl))
15811588

15821589
if !didRegister {
15831590
return false
15841591
}
1585-
1586-
// am.ips.realips() may return nil; ex: when preset fixed ips are used
1587-
for _, ip := range realips {
1588-
if ip.IsUnspecified() || !ip.IsValid() { // should never happen
1589-
continue
1590-
}
1591-
// register mapping from realip -> algip+qname (ptr)
1592-
if prevam := t.ptr[ip]; prevam == nil {
1593-
if ip.Is4() {
1594-
t.ptr[ip] = am4
1595-
} else if ip.Is6() {
1596-
t.ptr[ip] = am6
1597-
}
1598-
} // else prevam is merged into am4/am6 by t.alg above
1599-
}
16001592
return true
16011593
}
16021594

0 commit comments

Comments
 (0)