net/dial: only request domain A record when IPv6 not support

This commit is contained in:
weizhixiong 2023-03-13 08:47:29 +08:00
parent 70f98a251e
commit 1be6efdadf
1 changed files with 8 additions and 1 deletions

View File

@ -419,7 +419,14 @@ func (d *Dialer) DialContext(ctx context.Context, network, address string) (Conn
resolveCtx = context.WithValue(resolveCtx, nettrace.TraceKey{}, &shadow)
}
addrs, err := d.resolver().resolveAddrList(resolveCtx, "dial", network, address, d.LocalAddr)
networkForResolve := network
switch network {
case "tcp", "udp":
if !supportsIPv6() {
networkForResolve = network + "4"
}
}
addrs, err := d.resolver().resolveAddrList(resolveCtx, "dial", networkForResolve, address, d.LocalAddr)
if err != nil {
return nil, &OpError{Op: "dial", Net: network, Source: nil, Addr: nil, Err: err}
}