aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@mirantis.com>2020-10-16 16:23:54 +0000
committerEmmanuel Odeke <emmanuel@orijtech.com>2020-10-25 20:56:22 +0000
commitc80022204e8fc36ec487888d471de27a5ea47e17 (patch)
tree6a79a9cd5db331b8e3bfd4119c514cc06bfea1cc
parent94887410d41eb29ea4f2354e80a6aae4ee602fcf (diff)
downloadgo-c80022204e8fc36ec487888d471de27a5ea47e17.tar.gz
go-c80022204e8fc36ec487888d471de27a5ea47e17.zip
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 Change-Id: I20bd7e24131bba8eaa39a20c8950fe552364784d GitHub-Last-Rev: 119409839d37c8c7268f5f6db19c1789d9d96074 GitHub-Pull-Request: golang/go#39685 Reviewed-on: https://go-review.googlesource.com/c/go/+/238629 Run-TryBot: Dan Peterson <dpiddy@gmail.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Dan Peterson <dpiddy@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> Trust: Emmanuel Odeke <emmanuel@orijtech.com>
-rw-r--r--src/net/conf.go5
-rw-r--r--src/net/conf_test.go13
2 files changed, 10 insertions, 8 deletions
diff --git a/src/net/conf.go b/src/net/conf.go
index 5340847123..f1bbfedad0 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 4c21d56ba0..1fe3cf41b1 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,16 @@ func TestConfHostLookupOrder(t *testing.T) {
nss: &nssConf{err: fs.ErrNotExist},
resolv: defaultResolvConf,
},
- hostTests: []nssHostTest{{"google.com", "myhostname", hostLookupDNSFiles}},
+ hostTests: []nssHostTest{{"google.com", "myhostname", hostLookupFilesDNS}},
+ },
+ {
+ name: "linux_empty_nsswitch.conf",
+ c: &conf{
+ goos: "linux",
+ nss: nssStr(""),
+ resolv: defaultResolvConf,
+ },
+ hostTests: []nssHostTest{{"google.com", "myhostname", hostLookupFilesDNS}},
},
{
name: "files_mdns_dns",