|
|
|
|
@ -456,6 +456,7 @@ func runTestQuery(tb testing.TB, port uint16, request []byte, modify func(*forwa |
|
|
|
|
txid: getTxID(request), |
|
|
|
|
packet: request, |
|
|
|
|
closeOnCtxDone: new(closePool), |
|
|
|
|
family: "tcp", |
|
|
|
|
} |
|
|
|
|
defer fq.closeOnCtxDone.Close() |
|
|
|
|
|
|
|
|
|
@ -482,14 +483,13 @@ func TestForwarderTCPFallback(t *testing.T) { |
|
|
|
|
// Make a response that's very large, containing a bunch of localhost addresses.
|
|
|
|
|
request, largeResponse := makeLargeResponse(t, domain) |
|
|
|
|
|
|
|
|
|
var sawUDPRequest, sawTCPRequest atomic.Bool |
|
|
|
|
var sawTCPRequest atomic.Bool |
|
|
|
|
port := runDNSServer(t, nil, largeResponse, func(isTCP bool, gotRequest []byte) { |
|
|
|
|
if isTCP { |
|
|
|
|
t.Logf("saw TCP request") |
|
|
|
|
sawTCPRequest.Store(true) |
|
|
|
|
} else { |
|
|
|
|
t.Logf("saw UDP request") |
|
|
|
|
sawUDPRequest.Store(true) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if !bytes.Equal(request, gotRequest) { |
|
|
|
|
@ -504,9 +504,10 @@ func TestForwarderTCPFallback(t *testing.T) { |
|
|
|
|
if !sawTCPRequest.Load() { |
|
|
|
|
t.Errorf("DNS server never saw TCP request") |
|
|
|
|
} |
|
|
|
|
if !sawUDPRequest.Load() { |
|
|
|
|
t.Errorf("DNS server never saw UDP request") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// NOTE: can't assert that we see a UDP request here since we might
|
|
|
|
|
// race and run the TCP query first. We test the UDP codepath in
|
|
|
|
|
// TestForwarderTCPFallbackDisabled below, though.
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Test to ensure that if the UDP listener is unresponsive, we always make a
|
|
|
|
|
|