mirror of
https://github.com/golang/go.git
synced 2025-11-11 06:01:06 +00:00
net: don't do DNS for onion and local addresses
Fixes #13705 Change-Id: I86c60c78ce0394f830f904c9cba83ebbf3efc046 Reviewed-on: https://go-review.googlesource.com/21328 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
0d40dfa745
commit
72c1180852
2 changed files with 68 additions and 0 deletions
|
|
@ -319,8 +319,25 @@ func lookup(name string, qtype uint16) (cname string, rrs []dnsRR, err error) {
|
|||
return
|
||||
}
|
||||
|
||||
// avoidDNS reports whether this is a hostname for which we should not
|
||||
// use DNS. Currently this includes only .onion and .local names,
|
||||
// per RFC 7686 and RFC 6762, respectively. See golang.org/issue/13705.
|
||||
func avoidDNS(name string) bool {
|
||||
if name == "" {
|
||||
return true
|
||||
}
|
||||
if name[len(name)-1] == '.' {
|
||||
name = name[:len(name)-1]
|
||||
}
|
||||
return stringsHasSuffixFold(name, ".onion") || stringsHasSuffixFold(name, ".local")
|
||||
}
|
||||
|
||||
// nameList returns a list of names for sequential DNS queries.
|
||||
func (conf *dnsConfig) nameList(name string) []string {
|
||||
if avoidDNS(name) {
|
||||
return nil
|
||||
}
|
||||
|
||||
// If name is rooted (trailing dot), try only that name.
|
||||
rooted := len(name) > 0 && name[len(name)-1] == '.'
|
||||
if rooted {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue