Skip to content

Commit 73ee5bc

Browse files
committed
"forceType" was a bit confusing. Use booleans instead
1 parent 165ae5a commit 73ee5bc

2 files changed

Lines changed: 26 additions & 39 deletions

File tree

dnscrypt-proxy/plugin_cloak.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,15 @@ func (plugin *PluginCloak) Eval(pluginsState *PluginsState, msg *dns.Msg) error
262262
(question.Qtype == dns.TypeAAAA && cloakedName.ipv6 == nil) || expired) {
263263
target := cloakedName.target
264264
plugin.RUnlock()
265-
foundIPs, _, err := pluginsState.xTransport.resolveEncrypted(target, question.Qtype)
265+
returnIPv4 := question.Qtype == dns.TypeA
266+
returnIPv6 := question.Qtype == dns.TypeAAAA
267+
foundIPs, _, err := pluginsState.xTransport.resolveUsingServers(
268+
pluginsState.xTransport.mainProto,
269+
target,
270+
pluginsState.xTransport.internalResolvers,
271+
returnIPv4,
272+
returnIPv6,
273+
)
266274
if err != nil {
267275
synth.Rcode = dns.RcodeServerFailure
268276
pluginsState.synthResponse = synth

dnscrypt-proxy/xtransport.go

Lines changed: 17 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -332,28 +332,18 @@ func (xTransport *XTransport) rebuildTransport() {
332332
}
333333
}
334334

335-
func (xTransport *XTransport) resolveUsingSystem(host string, forceType uint16) ([]net.IP, time.Duration, error) {
335+
func (xTransport *XTransport) resolveUsingSystem(host string, returnIPv4, returnIPv6 bool) ([]net.IP, time.Duration, error) {
336336
ipa, err := net.LookupIP(host)
337-
queryIPv4 := xTransport.useIPv4
338-
queryIPv6 := xTransport.useIPv6
339-
if forceType == dns.TypeNone && queryIPv4 && queryIPv6 {
337+
if returnIPv4 && returnIPv6 {
340338
return ipa, SystemResolverIPTTL, err
341339
}
342-
switch forceType {
343-
case dns.TypeA:
344-
queryIPv4 = true
345-
queryIPv6 = false
346-
case dns.TypeAAAA:
347-
queryIPv4 = false
348-
queryIPv6 = true
349-
}
350340
ips := make([]net.IP, 0)
351341
for _, ip := range ipa {
352342
ipv4 := ip.To4()
353-
if queryIPv4 && ipv4 != nil {
343+
if returnIPv4 && ipv4 != nil {
354344
ips = append(ips, ipv4)
355345
}
356-
if queryIPv6 && ipv4 == nil {
346+
if returnIPv6 && ipv4 == nil {
357347
ips = append(ips, ip)
358348
}
359349
}
@@ -363,22 +353,15 @@ func (xTransport *XTransport) resolveUsingSystem(host string, forceType uint16)
363353
func (xTransport *XTransport) resolveUsingResolver(
364354
proto, host string,
365355
resolver string,
366-
forceType uint16,
356+
returnIPv4, returnIPv6 bool,
367357
) (ips []net.IP, ttl time.Duration, err error) {
368358
dnsClient := dns.Client{Net: proto, ReadTimeout: ResolverReadTimeout}
369359
queryType := make([]uint16, 0, 2)
370-
switch forceType {
371-
case dns.TypeA:
360+
if returnIPv4 {
372361
queryType = append(queryType, dns.TypeA)
373-
case dns.TypeAAAA:
362+
}
363+
if returnIPv6 {
374364
queryType = append(queryType, dns.TypeAAAA)
375-
default:
376-
if xTransport.useIPv4 {
377-
queryType = append(queryType, dns.TypeA)
378-
}
379-
if xTransport.useIPv6 {
380-
queryType = append(queryType, dns.TypeAAAA)
381-
}
382365
}
383366
var rrTTL uint32
384367
for _, rrType := range queryType {
@@ -406,14 +389,14 @@ func (xTransport *XTransport) resolveUsingResolver(
406389
return ips, ttl, err
407390
}
408391

409-
func (xTransport *XTransport) resolveUsingResolvers(
392+
func (xTransport *XTransport) resolveUsingServers(
410393
proto, host string,
411394
resolvers []string,
412-
forceType uint16,
395+
returnIPv4, returnIPv6 bool,
413396
) (ips []net.IP, ttl time.Duration, err error) {
414397
err = errors.New("Empty resolvers")
415398
for i, resolver := range resolvers {
416-
ips, ttl, err = xTransport.resolveUsingResolver(proto, host, resolver, forceType)
399+
ips, ttl, err = xTransport.resolveUsingResolver(proto, host, resolver, returnIPv4, returnIPv6)
417400
if err == nil {
418401
if i > 0 {
419402
dlog.Infof("Resolution succeeded with resolver %s[%s]", proto, resolver)
@@ -426,19 +409,15 @@ func (xTransport *XTransport) resolveUsingResolvers(
426409
return ips, ttl, err
427410
}
428411

429-
func (xTransport *XTransport) resolveEncrypted(host string, forceType uint16) ([]net.IP, time.Duration, error) {
430-
return xTransport.resolveUsingResolvers(xTransport.mainProto, host, xTransport.internalResolvers, forceType)
431-
}
432-
433-
func (xTransport *XTransport) resolve(host string, forceType uint16) (ips []net.IP, ttl time.Duration, err error) {
412+
func (xTransport *XTransport) resolve(host string, returnIPv4, returnIPv6 bool) (ips []net.IP, ttl time.Duration, err error) {
434413
protos := []string{"udp", "tcp"}
435414
if xTransport.mainProto == "tcp" {
436415
protos = []string{"tcp", "udp"}
437416
}
438417
if xTransport.ignoreSystemDNS {
439418
if xTransport.internalResolverReady {
440419
for _, proto := range protos {
441-
ips, ttl, err = xTransport.resolveUsingResolvers(proto, host, xTransport.internalResolvers, forceType)
420+
ips, ttl, err = xTransport.resolveUsingServers(proto, host, xTransport.internalResolvers, returnIPv4, returnIPv6)
442421
if err == nil {
443422
break
444423
}
@@ -448,7 +427,7 @@ func (xTransport *XTransport) resolve(host string, forceType uint16) (ips []net.
448427
dlog.Notice(err)
449428
}
450429
} else {
451-
ips, ttl, err = xTransport.resolveUsingSystem(host, forceType)
430+
ips, ttl, err = xTransport.resolveUsingSystem(host, returnIPv4, returnIPv6)
452431
if err != nil {
453432
err = errors.New("System DNS is not usable yet")
454433
dlog.Notice(err)
@@ -463,15 +442,15 @@ func (xTransport *XTransport) resolve(host string, forceType uint16) (ips []net.
463442
proto,
464443
)
465444
}
466-
ips, ttl, err = xTransport.resolveUsingResolvers(proto, host, xTransport.bootstrapResolvers, forceType)
445+
ips, ttl, err = xTransport.resolveUsingServers(proto, host, xTransport.bootstrapResolvers, returnIPv4, returnIPv6)
467446
if err == nil {
468447
break
469448
}
470449
}
471450
}
472451
if err != nil && xTransport.ignoreSystemDNS {
473452
dlog.Noticef("Bootstrap resolvers didn't respond - Trying with the system resolver as a last resort")
474-
ips, ttl, err = xTransport.resolveUsingSystem(host, forceType)
453+
ips, ttl, err = xTransport.resolveUsingSystem(host, returnIPv4, returnIPv6)
475454
}
476455
return ips, ttl, err
477456
}
@@ -491,7 +470,7 @@ func (xTransport *XTransport) resolveAndUpdateCache(host string) error {
491470
xTransport.markUpdatingCachedIP(host)
492471

493472
var foundIP net.IP
494-
ips, ttl, err := xTransport.resolve(host, dns.TypeNone)
473+
ips, ttl, err := xTransport.resolve(host, xTransport.useIPv4, xTransport.useIPv6)
495474
if len(ips) > 0 {
496475
foundIP = ips[rand.Intn(len(ips))]
497476
}

0 commit comments

Comments
 (0)