aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Mirtchovski <mirtchovski@gmail.com>2010-01-25 14:57:04 -0800
committerRuss Cox <rsc@golang.org>2010-01-25 14:57:04 -0800
commit3fc41d5e65b339fd450bde1657c9ea48f6e8a5ec (patch)
tree36845591d29ba13714f910f5178367e3eb886a8f
parent6d8829e931fa92d9228f6b67e0832195cd477248 (diff)
downloadgo-3fc41d5e65b339fd450bde1657c9ea48f6e8a5ec.tar.gz
go-3fc41d5e65b339fd450bde1657c9ea48f6e8a5ec.zip
net: parse aliases in /etc/hosts correctly
Previous behaviour only picked the first entry (official hostname) but not the aliases. R=rsc CC=golang-dev https://golang.org/cl/193092
-rw-r--r--src/pkg/net/hosts.go8
-rw-r--r--src/pkg/net/hosts_test.go6
-rw-r--r--src/pkg/net/hosts_testdata2
3 files changed, 13 insertions, 3 deletions
diff --git a/src/pkg/net/hosts.go b/src/pkg/net/hosts.go
index 5596c9dc72..25af7968db 100644
--- a/src/pkg/net/hosts.go
+++ b/src/pkg/net/hosts.go
@@ -40,9 +40,11 @@ func readHosts() {
if len(f) < 2 || ParseIP(f[0]) == nil {
continue
}
- h := f[1]
- old, _ := hs[h]
- hs[h] = appendHost(old, f[0])
+ for i := 1; i < len(f); i++ {
+ h := f[i]
+ old, _ := hs[h]
+ hs[h] = appendHost(old, f[0])
+ }
}
// Update the data cache.
hosts.time, _, _ = os.Time()
diff --git a/src/pkg/net/hosts_test.go b/src/pkg/net/hosts_test.go
index a05ee10e7c..d0ee2a7acb 100644
--- a/src/pkg/net/hosts_test.go
+++ b/src/pkg/net/hosts_test.go
@@ -24,6 +24,12 @@ var hosttests = []hostTest{
IPv4(127, 1, 1, 1),
}},
hostTest{"loki", []IP{}},
+ hostTest{"ullr", []IP{
+ IPv4(127, 1, 1, 2),
+ }},
+ hostTest{"ullrhost", []IP{
+ IPv4(127, 1, 1, 2),
+ }},
}
func TestLookupStaticHost(t *testing.T) {
diff --git a/src/pkg/net/hosts_testdata b/src/pkg/net/hosts_testdata
index 7cf6fbbc79..b601763898 100644
--- a/src/pkg/net/hosts_testdata
+++ b/src/pkg/net/hosts_testdata
@@ -3,6 +3,8 @@
127.0.0.3 odin # inline comment
::2 odin
127.1.1.1 thor
+# aliases
+127.1.1.2 ullr ullrhost
# Bogus entries that must be ignored.
123.123.123 loki
321.321.321.321