From: Matthew Dempsky Date: Thu, 28 Apr 2016 18:15:44 +0000 (-0700) Subject: net: append ":53" to DNS servers when reading resolv.conf X-Git-Tag: go1.7beta1~430 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=4d9bda51ff91f79944a12106b77315c9414b851a;p=gostls13.git net: append ":53" to DNS servers when reading resolv.conf Avoids generating some redundant garbage from re-concatenating the same string for every DNS query. benchmark old allocs new allocs delta BenchmarkGoLookupIP-32 156 154 -1.28% BenchmarkGoLookupIPNoSuchHost-32 456 446 -2.19% BenchmarkGoLookupIPWithBrokenNameServer-32 577 564 -2.25% benchmark old bytes new bytes delta BenchmarkGoLookupIP-32 10873 10824 -0.45% BenchmarkGoLookupIPNoSuchHost-32 43303 43140 -0.38% BenchmarkGoLookupIPWithBrokenNameServer-32 46824 46616 -0.44% Update #15473. Change-Id: I3b0173dfedf31bd08eaea1069968b416850864a1 Reviewed-on: https://go-review.googlesource.com/22556 Reviewed-by: Brad Fitzpatrick --- diff --git a/src/net/dnsclient_unix.go b/src/net/dnsclient_unix.go index 1adfda7b06..12d12eba9c 100644 --- a/src/net/dnsclient_unix.go +++ b/src/net/dnsclient_unix.go @@ -190,7 +190,6 @@ func tryOneName(ctx context.Context, cfg *dnsConfig, name string, qtype uint16) var lastErr error for i := 0; i < cfg.attempts; i++ { for _, server := range cfg.servers { - server = JoinHostPort(server, "53") msg, err := exchange(ctx, server, name, qtype) if err != nil { lastErr = &DNSError{ diff --git a/src/net/dnsclient_unix_test.go b/src/net/dnsclient_unix_test.go index b4aacef54f..c1ef5a32d3 100644 --- a/src/net/dnsclient_unix_test.go +++ b/src/net/dnsclient_unix_test.go @@ -221,7 +221,7 @@ var updateResolvConfTests = []struct { { name: "golang.org", lines: []string{"nameserver 8.8.8.8"}, - servers: []string{"8.8.8.8"}, + servers: []string{"8.8.8.8:53"}, }, { name: "", @@ -231,7 +231,7 @@ var updateResolvConfTests = []struct { { name: "www.example.com", lines: []string{"nameserver 8.8.4.4"}, - servers: []string{"8.8.4.4"}, + servers: []string{"8.8.4.4:53"}, }, } diff --git a/src/net/dnsconfig_unix.go b/src/net/dnsconfig_unix.go index 68ed64e541..88d168d8d2 100644 --- a/src/net/dnsconfig_unix.go +++ b/src/net/dnsconfig_unix.go @@ -14,12 +14,12 @@ import ( ) var ( - defaultNS = []string{"127.0.0.1", "::1"} + defaultNS = []string{"127.0.0.1:53", "[::1]:53"} getHostname = os.Hostname // variable for testing ) type dnsConfig struct { - servers []string // servers to use + servers []string // server addresses (in host:port form) to use search []string // suffixes to append to local name ndots int // number of dots in name to trigger absolute lookup timeout time.Duration // wait before giving up on a query, including retries @@ -70,9 +70,9 @@ func dnsReadConfig(filename string) *dnsConfig { // just an IP address. Otherwise we need DNS // to look it up. if parseIPv4(f[1]) != nil { - conf.servers = append(conf.servers, f[1]) + conf.servers = append(conf.servers, JoinHostPort(f[1], "53")) } else if ip, _ := parseIPv6(f[1], true); ip != nil { - conf.servers = append(conf.servers, f[1]) + conf.servers = append(conf.servers, JoinHostPort(f[1], "53")) } } diff --git a/src/net/dnsconfig_unix_test.go b/src/net/dnsconfig_unix_test.go index 17b344b704..7e27a72887 100644 --- a/src/net/dnsconfig_unix_test.go +++ b/src/net/dnsconfig_unix_test.go @@ -21,7 +21,7 @@ var dnsReadConfigTests = []struct { { name: "testdata/resolv.conf", want: &dnsConfig{ - servers: []string{"8.8.8.8", "2001:4860:4860::8888", "fe80::1%lo0"}, + servers: []string{"8.8.8.8:53", "[2001:4860:4860::8888]:53", "[fe80::1%lo0]:53"}, search: []string{"localdomain"}, ndots: 5, timeout: 10 * time.Second, @@ -33,7 +33,7 @@ var dnsReadConfigTests = []struct { { name: "testdata/domain-resolv.conf", want: &dnsConfig{ - servers: []string{"8.8.8.8"}, + servers: []string{"8.8.8.8:53"}, search: []string{"localdomain"}, ndots: 1, timeout: 5 * time.Second, @@ -43,7 +43,7 @@ var dnsReadConfigTests = []struct { { name: "testdata/search-resolv.conf", want: &dnsConfig{ - servers: []string{"8.8.8.8"}, + servers: []string{"8.8.8.8:53"}, search: []string{"test", "invalid"}, ndots: 1, timeout: 5 * time.Second, @@ -67,7 +67,7 @@ var dnsReadConfigTests = []struct { timeout: 5 * time.Second, attempts: 2, lookup: []string{"file", "bind"}, - servers: []string{"169.254.169.254", "10.240.0.1"}, + servers: []string{"169.254.169.254:53", "10.240.0.1:53"}, search: []string{"c.symbolic-datum-552.internal."}, }, },