]> Cypherpunks repositories - gostls13.git/commitdiff
net: append ":53" to DNS servers when reading resolv.conf
authorMatthew Dempsky <mdempsky@google.com>
Thu, 28 Apr 2016 18:15:44 +0000 (11:15 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Thu, 28 Apr 2016 20:22:11 +0000 (20:22 +0000)
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 <bradfitz@golang.org>
src/net/dnsclient_unix.go
src/net/dnsclient_unix_test.go
src/net/dnsconfig_unix.go
src/net/dnsconfig_unix_test.go

index 1adfda7b06a5f65e9f7a21c9f80c2fe3c821563d..12d12eba9c6168bc86b3ba01457b56feed7b71f2 100644 (file)
@@ -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{
index b4aacef54f77aec98c015a739001942426511dd4..c1ef5a32d3dcd6d3f465de74e41376bc4a651c7c 100644 (file)
@@ -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"},
        },
 }
 
index 68ed64e541f04f8971375246c0b9a6a4231e27cc..88d168d8d2dbaac2ee4a2e20c60838135927e6fd 100644 (file)
@@ -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"))
                                }
                        }
 
index 17b344b70474fd3a35a6e91f129144678563b7a4..7e27a728878dfdbf036ecb1bce941d022bf5d8d8 100644 (file)
@@ -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."},
                },
        },