netxlite: call getaddrinfo and handle platform-specific oddities (#764)
This commit changes our system resolver to call getaddrinfo directly when CGO is enabled. This change allows us to: 1. obtain the CNAME easily 2. obtain the real getaddrinfo retval 3. handle platform specific oddities such as `EAI_NODATA` returned on Android devices See https://github.com/ooni/probe/issues/2029 and https://github.com/ooni/probe/issues/2029#issuecomment-1140258729 in particular. See https://github.com/ooni/probe/issues/2033 for documentation regarding the desire to see `getaddrinfo`'s retval. See https://github.com/ooni/probe/issues/2118 for possible follow-up changes.
This commit is contained in:
parent
62bd62ece1
commit
cf6dbe48e0
36 changed files with 1259 additions and 59 deletions
|
|
@ -14,6 +14,7 @@ func TestDNSAnalysis(t *testing.T) {
|
|||
measurementFailure := netxlite.FailureDNSNXDOMAINError
|
||||
controlFailure := webconnectivity.DNSNameError
|
||||
eofFailure := io.EOF.Error()
|
||||
androidEaiNoData := netxlite.FailureAndroidDNSCacheNoData
|
||||
type args struct {
|
||||
URL *url.URL
|
||||
measurement webconnectivity.DNSLookupResult
|
||||
|
|
@ -57,7 +58,7 @@ func TestDNSAnalysis(t *testing.T) {
|
|||
DNSConsistency: &webconnectivity.DNSInconsistent,
|
||||
},
|
||||
}, {
|
||||
name: "when the failures are compatible",
|
||||
name: "when the failures are compatible (NXDOMAIN case)",
|
||||
args: args{
|
||||
URL: &url.URL{
|
||||
Host: "www.kerneltrap.org",
|
||||
|
|
@ -74,6 +75,24 @@ func TestDNSAnalysis(t *testing.T) {
|
|||
wantOut: webconnectivity.DNSAnalysisResult{
|
||||
DNSConsistency: &webconnectivity.DNSConsistent,
|
||||
},
|
||||
}, {
|
||||
name: "when the failures are compatible (Android EAI_NODATA case)",
|
||||
args: args{
|
||||
URL: &url.URL{
|
||||
Host: "www.kerneltrap.org",
|
||||
},
|
||||
measurement: webconnectivity.DNSLookupResult{
|
||||
Failure: &androidEaiNoData,
|
||||
},
|
||||
control: webconnectivity.ControlResponse{
|
||||
DNS: webconnectivity.ControlDNSResult{
|
||||
Failure: &controlFailure,
|
||||
},
|
||||
},
|
||||
},
|
||||
wantOut: webconnectivity.DNSAnalysisResult{
|
||||
DNSConsistency: &webconnectivity.DNSConsistent,
|
||||
},
|
||||
}, {
|
||||
name: "when the ASNs are equal",
|
||||
args: args{
|
||||
|
|
|
|||
Loading…
Reference in a new issue