]> Cypherpunks repositories - gostls13.git/commitdiff
net: prefer /etc/hosts over DNS when no /etc/nsswitch.conf is present
authorNatanael Copa <ncopa@mirantis.com>
Fri, 16 Oct 2020 16:23:54 +0000 (16:23 +0000)
committerEmmanuel Odeke <emmanuel@orijtech.com>
Sun, 25 Oct 2020 20:56:22 +0000 (20:56 +0000)
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>

src/net/conf.go
src/net/conf_test.go

index 5340847123ce675eeccadefca3a025c262caadf7..f1bbfedad06cb5ba749e2b47ef60f9ceecab196b 100644 (file)
@@ -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 {
index 4c21d56ba0ab31539a160fbde4a9aef8ec4b0af3..1fe3cf41b1e28c9a0f948165c9e6ccb2971a14f6 100644 (file)
@@ -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",