From c735e478e3a407ba4fae3a46f03b553150d38bbd Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Thu, 18 Jun 2020 16:23:59 +0200 Subject: [PATCH] net: prefer /etc/hosts over DNS when no /etc/nsswitch.conf is present Do not mimic glibc behavior if /etc/nsswitch.conf is missing. This will will likely be missing on musl libc systems and glibc systems will likely always have it, resulting in localhost lookup being done over DNS rather than from /etc/hosts. Do what makes most sense rather than making any assumption about the libc. Fixes #35305 --- src/net/conf.go | 5 ----- src/net/conf_test.go | 4 +--- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/src/net/conf.go b/src/net/conf.go index 5340847123ce67..f1bbfedad06cb5 100644 --- a/src/net/conf.go +++ b/src/net/conf.go @@ -202,11 +202,6 @@ func (c *conf) hostLookupOrder(r *Resolver, hostname string) (ret hostLookupOrde // illumos defaults to "nis [NOTFOUND=return] files" return fallbackOrder } - if c.goos == "linux" { - // glibc says the default is "dns [!UNAVAIL=return] files" - // https://www.gnu.org/software/libc/manual/html_node/Notes-on-NSS-Configuration-File.html. - return hostLookupDNSFiles - } return hostLookupFilesDNS } if nss.err != nil { diff --git a/src/net/conf_test.go b/src/net/conf_test.go index 3c7403eccc23f5..c2d0730353bd25 100644 --- a/src/net/conf_test.go +++ b/src/net/conf_test.go @@ -170,8 +170,6 @@ func TestConfHostLookupOrder(t *testing.T) { }, hostTests: []nssHostTest{{"google.com", "myhostname", hostLookupDNSFiles}}, }, - // glibc lacking an nsswitch.conf, per - // https://www.gnu.org/software/libc/manual/html_node/Notes-on-NSS-Configuration-File.html { name: "linux_no_nsswitch.conf", c: &conf{ @@ -179,7 +177,7 @@ func TestConfHostLookupOrder(t *testing.T) { nss: &nssConf{err: os.ErrNotExist}, resolv: defaultResolvConf, }, - hostTests: []nssHostTest{{"google.com", "myhostname", hostLookupDNSFiles}}, + hostTests: []nssHostTest{{"google.com", "myhostname", hostLookupFilesDNS}}, }, { name: "files_mdns_dns",