cleanup(netx): stop using most netxlite resolver internals (#797)

This diff modifies netx to stop using most netxlite resolver internals
but the internal function that creates a new, unwrapped system resolver,
which will be dealt with in a subsequent pull request.

See https://github.com/ooni/probe/issues/2121
This commit is contained in:
Simone Basso
2022-06-05 19:52:39 +02:00
committed by GitHub
parent 07c0b08505
commit 2d3d5d9cdc
5 changed files with 18 additions and 243 deletions
+9 -2
View File
@@ -16,6 +16,12 @@ import (
// BogonResolver is a bogon aware resolver. When a bogon is encountered in
// a reply, this resolver will return ErrDNSBogon.
//
// This resolver is not part of the default chain created by WrapResolver
// therefore it returns errors that have already been wrapped.
//
// BUG: This resolver currently only implements LookupHost. All the other
// lookup methods will always return ErrNoDNSTransport.
type BogonResolver struct {
Resolver model.Resolver
}
@@ -26,11 +32,12 @@ var _ model.Resolver = &BogonResolver{}
func (r *BogonResolver) LookupHost(ctx context.Context, hostname string) ([]string, error) {
addrs, err := r.Resolver.LookupHost(ctx, hostname)
if err != nil {
return nil, err
return nil, err // not our responsibility to wrap this error
}
for _, addr := range addrs {
if IsBogon(addr) {
return nil, ErrDNSBogon
// wrap ErrDNSBogon as documented
return nil, newErrWrapper(classifyResolverError, ResolveOperation, ErrDNSBogon)
}
}
return addrs, nil
+4
View File
@@ -62,6 +62,10 @@ func TestBogonResolver(t *testing.T) {
if !errors.Is(err, ErrDNSBogon) {
t.Fatal("unexpected err", err)
}
var ew *ErrWrapper
if !errors.As(err, &ew) {
t.Fatal("error has not been wrapped")
}
if len(addrs) > 0 {
t.Fatal("expected no addrs")
}
-12
View File
@@ -9,16 +9,4 @@ package netxlite
// Deprecated: do not use these names in new code.
var (
NewResolverSystem = newResolverSystem
DefaultResolver = newResolverSystem()
)
// These types export internal names to legacy ooni/probe-cli code.
//
// Deprecated: do not use these names in new code.
type (
ErrorWrapperResolver = resolverErrWrapper
ResolverSystemDoNotInstantiate = resolverSystem // instantiate => crash w/ nil transport
ResolverLogger = resolverLogger
ResolverIDNA = resolverIDNA
AddressResolver = resolverShortCircuitIPAddr
)