Skip to content

Commit 971eb36

Browse files
committed
code review fixes
1 parent 8ce0afd commit 971eb36

File tree

4 files changed

+20
-10
lines changed

4 files changed

+20
-10
lines changed

src/net/dnsclient_unix.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ import (
2626
"golang.org/x/net/dns/dnsmessage"
2727
)
2828

29+
const (
30+
// to be used as a useTCP parameter to exchange
31+
useTCPOnly = true
32+
useUDPOrTCP = false
33+
)
34+
2935
var (
3036
errLameReferral = errors.New("lame referral")
3137
errCannotUnmarshalDNSMessage = errors.New("cannot unmarshal DNS message")
@@ -131,14 +137,14 @@ func dnsStreamRoundTrip(c Conn, id uint16, query dnsmessage.Question, b []byte)
131137
}
132138

133139
// exchange sends a query on the connection and hopes for a response.
134-
func (r *Resolver) exchange(ctx context.Context, server string, q dnsmessage.Question, timeout time.Duration, usetcp bool) (dnsmessage.Parser, dnsmessage.Header, error) {
140+
func (r *Resolver) exchange(ctx context.Context, server string, q dnsmessage.Question, timeout time.Duration, useTCP bool) (dnsmessage.Parser, dnsmessage.Header, error) {
135141
q.Class = dnsmessage.ClassINET
136142
id, udpReq, tcpReq, err := newRequest(q)
137143
if err != nil {
138144
return dnsmessage.Parser{}, dnsmessage.Header{}, errCannotMarshalDNSMessage
139145
}
140146
var networks []string
141-
if usetcp {
147+
if useTCP {
142148
networks = []string{"tcp"}
143149
} else {
144150
networks = []string{"udp", "tcp"}
@@ -247,7 +253,7 @@ func (r *Resolver) tryOneName(ctx context.Context, cfg *dnsConfig, name string,
247253
for j := uint32(0); j < sLen; j++ {
248254
server := cfg.servers[(serverOffset+j)%sLen]
249255

250-
p, h, err := r.exchange(ctx, server, q, cfg.timeout, cfg.usetcp)
256+
p, h, err := r.exchange(ctx, server, q, cfg.timeout, cfg.useTCP)
251257
if err != nil {
252258
dnsErr := &DNSError{
253259
Err: err.Error(),

src/net/dnsclient_unix_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ func TestDNSTransportFallback(t *testing.T) {
8181
for _, tt := range dnsTransportFallbackTests {
8282
ctx, cancel := context.WithCancel(context.Background())
8383
defer cancel()
84-
_, h, err := r.exchange(ctx, tt.server, tt.question, time.Second, false)
84+
_, h, err := r.exchange(ctx, tt.server, tt.question, time.Second, useUDPOrTCP)
8585
if err != nil {
8686
t.Error(err)
8787
continue
@@ -137,7 +137,7 @@ func TestSpecialDomainName(t *testing.T) {
137137
for _, tt := range specialDomainNameTests {
138138
ctx, cancel := context.WithCancel(context.Background())
139139
defer cancel()
140-
_, h, err := r.exchange(ctx, server, tt.question, 3*time.Second, false)
140+
_, h, err := r.exchange(ctx, server, tt.question, 3*time.Second, useUDPOrTCP)
141141
if err != nil {
142142
t.Error(err)
143143
continue
@@ -1564,7 +1564,7 @@ func TestDNSDialTCP(t *testing.T) {
15641564
}
15651565
r := Resolver{PreferGo: true, Dial: fake.DialContext}
15661566
ctx := context.Background()
1567-
_, _, err := r.exchange(ctx, "0.0.0.0", mustQuestion("com.", dnsmessage.TypeALL, dnsmessage.ClassINET), time.Second, false)
1567+
_, _, err := r.exchange(ctx, "0.0.0.0", mustQuestion("com.", dnsmessage.TypeALL, dnsmessage.ClassINET), time.Second, useUDPOrTCP)
15681568
if err != nil {
15691569
t.Fatal("exhange failed:", err)
15701570
}
@@ -1717,7 +1717,7 @@ func TestDNSUseTCP(t *testing.T) {
17171717
r := Resolver{PreferGo: true, Dial: fake.DialContext}
17181718
ctx, cancel := context.WithCancel(context.Background())
17191719
defer cancel()
1720-
_, _, err := r.exchange(ctx, "0.0.0.0", mustQuestion("com.", dnsmessage.TypeALL, dnsmessage.ClassINET), time.Second, true)
1720+
_, _, err := r.exchange(ctx, "0.0.0.0", mustQuestion("com.", dnsmessage.TypeALL, dnsmessage.ClassINET), time.Second, useTCPOnly)
17211721
if err != nil {
17221722
t.Fatal("exchange failed:", err)
17231723
}

src/net/dnsconfig_unix.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ type dnsConfig struct {
3333
mtime time.Time // time of resolv.conf modification
3434
soffset uint32 // used by serverOffset
3535
singleRequest bool // use sequential A and AAAA queries instead of parallel queries
36-
usetcp bool // force usage of TCP for DNS resolutions
36+
useTCP bool // force usage of TCP for DNS resolutions
3737
}
3838

3939
// See resolv.conf(5) on a Linux machine.
@@ -125,7 +125,11 @@ func dnsReadConfig(filename string) *dnsConfig {
125125
// perform the IPv6 and IPv4 requests sequentially."
126126
conf.singleRequest = true
127127
case s == "use-vc":
128-
conf.usetcp = true
128+
// Linux glibc option:
129+
// http://man7.org/linux/man-pages/man5/resolv.conf.5.html
130+
// "Sets RES_USEVC in _res.options.
131+
// This option forces the use of TCP for DNS resolutions."
132+
conf.useTCP = true
129133
default:
130134
conf.unknownOpt = true
131135
}

src/net/dnsconfig_unix_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ var dnsReadConfigTests = []struct {
129129
want: &dnsConfig{
130130
servers: defaultNS,
131131
ndots: 1,
132-
usetcp: true,
132+
useTCP: true,
133133
timeout: 5 * time.Second,
134134
attempts: 2,
135135
search: []string{"domain.local."},

0 commit comments

Comments
 (0)