Skip to content

Commit c4e1393

Browse files
committed
resolveUsingResolver: don't return an error if we got some IPs
Even if this is not the full set of IPs.
1 parent a7cb2c8 commit c4e1393

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

dnscrypt-proxy/xtransport.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -539,6 +539,8 @@ func (xTransport *XTransport) resolveUsingResolver(
539539
queryType = append(queryType, dns.TypeAAAA)
540540
}
541541
var rrTTL uint32
542+
rrTTLSet := false
543+
var lastErr error
542544
ctx, cancel := context.WithTimeout(context.Background(), ResolverReadTimeout)
543545
defer cancel()
544546
for _, rrType := range queryType {
@@ -559,15 +561,21 @@ func (xTransport *XTransport) resolveUsingResolver(
559561
case dns.TypeAAAA:
560562
ips = append(ips, answer.(*dns.AAAA).AAAA.Addr.AsSlice())
561563
}
562-
rrTTL = answer.Header().TTL
564+
if answerTTL := answer.Header().TTL; !rrTTLSet || answerTTL < rrTTL {
565+
rrTTL = answerTTL
566+
rrTTLSet = true
567+
}
563568
}
564569
}
570+
} else {
571+
lastErr = err
565572
}
566573
}
567574
if len(ips) > 0 {
568575
ttl = time.Duration(rrTTL) * time.Second
576+
return ips, ttl, nil
569577
}
570-
return ips, ttl, err
578+
return nil, 0, lastErr
571579
}
572580

573581
func (xTransport *XTransport) resolveUsingServers(

0 commit comments

Comments
 (0)