From: Dmitry Chestnykh Date: Thu, 21 Apr 2011 14:23:03 +0000 (-0400) Subject: net: try /etc/hosts before loading DNS config. X-Git-Tag: weekly.2011-04-27~82 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=a260de44e96edbd7e4e99e0c73ba2960460ffc25;p=gostls13.git net: try /etc/hosts before loading DNS config. On Mac X 10.6 /etc/resolv.conf is changed dynamically, and may not exist at all when all network connections are turned off, thus any lookup, even for "localhost" would fail with "error reading DNS config: open /etc/resolv.conf: no such file or directory". This change avoids the error by trying to lookup addresses in /etc/hosts before loading DNS config. R=golang-dev, rsc1, rsc CC=golang-dev https://golang.org/cl/4431054 --- diff --git a/src/pkg/net/dnsclient.go b/src/pkg/net/dnsclient.go index d3e4049ad2..89f2409bf6 100644 --- a/src/pkg/net/dnsclient.go +++ b/src/pkg/net/dnsclient.go @@ -313,16 +313,16 @@ func lookup(name string, qtype uint16) (cname string, addrs []dnsRR, err os.Erro // depending on our lookup code, so that Go and C get the same // answers. func goLookupHost(name string) (addrs []string, err os.Error) { - onceLoadConfig.Do(loadConfig) - if dnserr != nil || cfg == nil { - err = dnserr - return - } // Use entries from /etc/hosts if they match. addrs = lookupStaticHost(name) if len(addrs) > 0 { return } + onceLoadConfig.Do(loadConfig) + if dnserr != nil || cfg == nil { + err = dnserr + return + } ips, err := goLookupIP(name) if err != nil { return