diff --git a/cmd/cli/cli.go b/cmd/cli/cli.go index 863e070..da9d8c9 100644 --- a/cmd/cli/cli.go +++ b/cmd/cli/cli.go @@ -860,7 +860,7 @@ func selfCheckStatus(ctx context.Context, s service.Service, sockDir string) (bo func selfCheckResolveDomain(ctx context.Context, addr, scope string, domain string) error { bo := backoff.NewBackoff("self-check", logf, 10*time.Second) bo.LogLongerThan = 500 * time.Millisecond - maxAttempts := 20 + maxAttempts := 10 c := new(dns.Client) var ( @@ -876,7 +876,7 @@ func selfCheckResolveDomain(ctx context.Context, addr, scope string, domain stri m := new(dns.Msg) m.SetQuestion(domain+".", dns.TypeA) m.RecursionDesired = true - r, _, exErr := exchangeContextWithTimeout(c, time.Second, m, addr) + r, _, exErr := exchangeContextWithTimeout(c, 5*time.Second, m, addr) if r != nil && r.Rcode == dns.RcodeSuccess && len(r.Answer) > 0 { mainLog.Load().Debug().Msgf("%s self-check against %q succeeded", scope, domain) return nil diff --git a/internal/clientinfo/mdns.go b/internal/clientinfo/mdns.go index 23342b3..e009e01 100644 --- a/internal/clientinfo/mdns.go +++ b/internal/clientinfo/mdns.go @@ -92,6 +92,11 @@ func (m *mdns) init(quitCh chan struct{}) error { return err } + // Check if IPv6 is available once and use the result for the rest of the function. + ctrld.ProxyLogger.Load().Debug().Msgf("checking for IPv6 availability in mdns init") + ipv6 := ctrldnet.IPv6Available(context.Background()) + ctrld.ProxyLogger.Load().Debug().Msgf("IPv6 is %v in mdns init", ipv6) + v4ConnList := make([]*net.UDPConn, 0, len(ifaces)) v6ConnList := make([]*net.UDPConn, 0, len(ifaces)) for _, iface := range ifaces { @@ -102,14 +107,12 @@ func (m *mdns) init(quitCh chan struct{}) error { v4ConnList = append(v4ConnList, conn) go m.readLoop(conn) } - ctrld.ProxyLogger.Load().Debug().Msgf("checking for IPv6 availability in mdns init") - if ctrldnet.IPv6Available(context.Background()) { + + if ipv6 { if conn, err := net.ListenMulticastUDP("udp6", &iface, mdnsV6Addr); err == nil { v6ConnList = append(v6ConnList, conn) go m.readLoop(conn) } - } else { - ctrld.ProxyLogger.Load().Debug().Msgf("IPv6 is not available in mdns init") } }