diff --git a/internal/cmd/oohelperd/internal/webconnectivity/dns.go b/internal/cmd/oohelperd/internal/webconnectivity/dns.go index d74af22..1125958 100644 --- a/internal/cmd/oohelperd/internal/webconnectivity/dns.go +++ b/internal/cmd/oohelperd/internal/webconnectivity/dns.go @@ -51,8 +51,13 @@ func dnsMapFailure(failure *string) *string { // already checking for this specific error string. s := webconnectivity.DNSNameError return &s - case netxlite.FailureDNSNoAnswer, - netxlite.FailureDNSNonRecoverableFailure, + case netxlite.FailureDNSNoAnswer: + // In this case the legacy TH would produce an empty + // reply that is not attached to any error. + // + // See https://github.com/ooni/probe/issues/1707#issuecomment-944322725 + return nil + case netxlite.FailureDNSNonRecoverableFailure, netxlite.FailureDNSRefusedError, netxlite.FailureDNSServerMisbehaving, netxlite.FailureDNSTemporaryFailure: diff --git a/internal/cmd/oohelperd/internal/webconnectivity/dns_test.go b/internal/cmd/oohelperd/internal/webconnectivity/dns_test.go index 486dde7..1e51ea7 100644 --- a/internal/cmd/oohelperd/internal/webconnectivity/dns_test.go +++ b/internal/cmd/oohelperd/internal/webconnectivity/dns_test.go @@ -31,7 +31,7 @@ func Test_dnsMapFailure(t *testing.T) { }, { name: "no answer", failure: stringPointerForString(netxlite.FailureDNSNoAnswer), - want: stringPointerForString("dns_server_failure"), + want: nil, }, { name: "non recoverable failure", failure: stringPointerForString(netxlite.FailureDNSNonRecoverableFailure), diff --git a/internal/netxlite/serialresolver.go b/internal/netxlite/serialresolver.go index 90f7723..1466120 100644 --- a/internal/netxlite/serialresolver.go +++ b/internal/netxlite/serialresolver.go @@ -64,6 +64,9 @@ func (r *SerialResolver) LookupHost(ctx context.Context, hostname string) ([]str addrsA, errA := r.lookupHostWithRetry(ctx, hostname, dns.TypeA) addrsAAAA, errAAAA := r.lookupHostWithRetry(ctx, hostname, dns.TypeAAAA) if errA != nil && errAAAA != nil { + // Note: we choose to return the errA because we assume that + // it's the more meaningful one: the errAAAA may just be telling + // us that there is no AAAA record for the website. return nil, errA } addrs = append(addrs, addrsA...)