Skip to content

Commit df0ab6a

Browse files
committed
Fix: ipv6 dns crash
1 parent 7b48138 commit df0ab6a

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

dns/client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func (c *client) ExchangeContext(ctx context.Context, m *D.Msg) (msg *D.Msg, err
2626
network = "tcp"
2727
}
2828

29-
ip, err := c.r.ResolveIPv4(c.host)
29+
ip, err := c.r.ResolveIP(c.host)
3030
if err != nil {
3131
return nil, err
3232
}

dns/resolver.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,23 +44,20 @@ type Resolver struct {
4444
cache *cache.Cache
4545
}
4646

47-
// ResolveIP request with TypeA and TypeAAAA, priority return TypeAAAA
47+
// ResolveIP request with TypeA and TypeAAAA, priority return TypeA
4848
func (r *Resolver) ResolveIP(host string) (ip net.IP, err error) {
49-
ch := make(chan net.IP)
49+
ch := make(chan net.IP, 1)
5050
go func() {
5151
defer close(ch)
52-
ip, err := r.resolveIP(host, D.TypeA)
52+
ip, err := r.resolveIP(host, D.TypeAAAA)
5353
if err != nil {
5454
return
5555
}
5656
ch <- ip
5757
}()
5858

59-
ip, err = r.resolveIP(host, D.TypeAAAA)
59+
ip, err = r.resolveIP(host, D.TypeA)
6060
if err == nil {
61-
go func() {
62-
<-ch
63-
}()
6461
return
6562
}
6663

@@ -216,6 +213,8 @@ func (r *Resolver) resolveIP(host string, dnsType uint16) (ip net.IP, err error)
216213
return ip, nil
217214
} else if dnsType == D.TypeA && isIPv4 {
218215
return ip, nil
216+
} else {
217+
return nil, resolver.ErrIPVersion
219218
}
220219
}
221220

0 commit comments

Comments
 (0)