From 003bfa0e26356a61cab6bc20536ca3f233091f8b Mon Sep 17 00:00:00 2001 From: Andrey Mirtchovski Date: Mon, 19 Sep 2011 11:50:31 -0400 Subject: [PATCH] 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 --- src/pkg/net/dnsclient_unix.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/pkg/net/dnsclient_unix.go b/src/pkg/net/dnsclient_unix.go index a28eb16158..eb7db5e270 100644 --- a/src/pkg/net/dnsclient_unix.go +++ b/src/pkg/net/dnsclient_unix.go @@ -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 -- 2.50.0