diff --git a/internal/traverse/traverser.go b/internal/traverse/traverser.go index aa6622e..e139db1 100644 --- a/internal/traverse/traverser.go +++ b/internal/traverse/traverser.go @@ -232,11 +232,11 @@ func (t *Traverser) processReferral(ctx context.Context, ref *Referral, cache *I ref.State = StateResolved } else { addrs, err := t.ResolveNS(ctx, ref.Name, cache, visitedCopy, t.depth) + nsName := strings.TrimSuffix(ref.Bailiwick, ".") + if nsName == "" || nsName == "." { + nsName = strings.TrimSuffix(ref.Name, ".") + } if err != nil { - nsName := strings.TrimSuffix(ref.Bailiwick, ".") - if nsName == "" || nsName == "." { - nsName = strings.TrimSuffix(ref.Name, ".") - } return &Response{ Referral: ref, Type: RespNSResolutionFailed, @@ -247,10 +247,6 @@ func (t *Traverser) processReferral(ctx context.Context, ref *Referral, cache *I ref.Addresses = addrs ref.State = StateResolved } else { - nsName := strings.TrimSuffix(ref.Bailiwick, ".") - if nsName == "" || nsName == "." { - nsName = strings.TrimSuffix(ref.Name, ".") - } return &Response{ Referral: ref, Type: RespNSResolutionFailed, @@ -371,7 +367,7 @@ func (t *Traverser) ResolveNS(ctx context.Context, nsName string, cache *InfoCac break } - if resp.Type == RespSERVFAIL || resp.Type == RespError { + if resp.Type == RespSERVFAIL || resp.Type == RespError || resp.Type == RespNSResolutionFailed { lastErr = fmt.Errorf("server error resolving %s: %s", nsName, resp.Type) continue }