]> Cypherpunks repositories - gostls13.git/commitdiff
net: try /etc/hosts before loading DNS config.
authorDmitry Chestnykh <dchest@gmail.com>
Thu, 21 Apr 2011 14:23:03 +0000 (10:23 -0400)
committerRuss Cox <rsc@golang.org>
Thu, 21 Apr 2011 14:23:03 +0000 (10:23 -0400)
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

src/pkg/net/dnsclient.go

index d3e4049ad2166832ff6d33aa76657fec4a9bbe9b..89f2409bf6548ad66728e457141a8ff9ab5a93e1 100644 (file)
@@ -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