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:
@@ -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
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user