net: use /etc/hosts first when looking up IP addresses using native Go's dns resolver

Previously /etc/hosts would be ignored altogether, this change returns matching results
from that file without talking to a DNS server.

R=rsc
CC=golang-dev
https://golang.org/cl/5061042
This commit is contained in:
Andrey Mirtchovski 2011-09-19 11:50:31 -04:00 committed by Russ Cox
parent 46468357a2
commit 003bfa0e26

View file

@ -215,6 +215,18 @@ func goLookupHost(name string) (addrs []string, err os.Error) {
// depending on our lookup code, so that Go and C get the same
// answers.
func goLookupIP(name string) (addrs []IP, err os.Error) {
// Use entries from /etc/hosts if possible.
haddrs := lookupStaticHost(name)
if len(haddrs) > 0 {
for _, haddr := range haddrs {
if ip := ParseIP(haddr); ip != nil {
addrs = append(addrs, ip)
}
}
if len(addrs) > 0 {
return
}
}
onceLoadConfig.Do(loadConfig)
if dnserr != nil || cfg == nil {
err = dnserr