Rotate mDNS query order to avoid repeated blocking

This commit is contained in:
Ian Gulliver
2026-01-25 11:53:32 -08:00
parent 1d6075d395
commit 19fabc71e4

View File

@@ -229,10 +229,14 @@ func (t *Tendrils) runMDNSQuerier(ctx context.Context, iface net.Interface, conn
}
}
var mdnsQueryOffset int
func (t *Tendrils) sendMDNSQueries(ifaceName string, conn *net.UDPConn) {
dest := &net.UDPAddr{IP: net.IPv4(224, 0, 0, 251), Port: 5353}
for _, service := range mdnsServices {
n := len(mdnsServices)
for i := 0; i < n; i++ {
service := mdnsServices[(i+mdnsQueryOffset)%n]
msg := new(dns.Msg)
msg.SetQuestion(service, dns.TypePTR)
msg.RecursionDesired = false
@@ -244,6 +248,7 @@ func (t *Tendrils) sendMDNSQueries(ifaceName string, conn *net.UDPConn) {
conn.WriteToUDP(data, dest)
}
mdnsQueryOffset++
if t.DebugMDNS {
log.Printf("[mdns] %s: sent queries for %d services", ifaceName, len(mdnsServices))