fix(wcth): match legacy TH w/ empty DNS reply (#546)

See https://github.com/ooni/probe/issues/1707#issuecomment-944322725
This commit is contained in:
Simone Basso 2021-10-15 16:20:07 +02:00 committed by GitHub
parent 2d1666b88b
commit 2fa87f0e00
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 3 deletions

View File

@ -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:

View File

@ -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),

View File

@ -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...)