diff --git a/internal/dns/real_exchange_test.go b/internal/dns/real_exchange_test.go index 2a772e1..677f0ad 100644 --- a/internal/dns/real_exchange_test.go +++ b/internal/dns/real_exchange_test.go @@ -3,6 +3,7 @@ package dns import ( "context" "net" + "sync/atomic" "testing" "time" @@ -107,9 +108,11 @@ func TestRealExchangeUnreachable(t *testing.T) { } func TestClientAgainstLocalServer(t *testing.T) { - var sawRD bool + // Written by the server handler goroutine, read by the test goroutine; + // the UDP round-trip provides no happens-before edge, so use an atomic. + var sawRD atomic.Bool addr := startTestDNSServer(t, "udp", func(w dns.ResponseWriter, r *dns.Msg) { - sawRD = r.RecursionDesired + sawRD.Store(r.RecursionDesired) aHandler("5.6.7.8")(w, r) }) @@ -127,7 +130,7 @@ func TestClientAgainstLocalServer(t *testing.T) { if len(resp.Answer) == 0 { t.Fatal("expected answers") } - if sawRD { + if sawRD.Load() { t.Error("wire query must have RD=0") } }