mirror of https://github.com/golang/go.git
net: fix lookup of AAAA-only hosts without cgo
Fixes #3762. R=rsc CC=golang-dev https://golang.org/cl/6303106
This commit is contained in:
parent
ec6b5123fe
commit
dfbd42e4f8
|
|
@ -237,24 +237,30 @@ func goLookupIP(name string) (addrs []IP, err error) {
|
||||||
}
|
}
|
||||||
var records []dnsRR
|
var records []dnsRR
|
||||||
var cname string
|
var cname string
|
||||||
cname, records, err = lookup(name, dnsTypeA)
|
var err4, err6 error
|
||||||
if err != nil {
|
cname, records, err4 = lookup(name, dnsTypeA)
|
||||||
return
|
|
||||||
}
|
|
||||||
addrs = convertRR_A(records)
|
addrs = convertRR_A(records)
|
||||||
if cname != "" {
|
if cname != "" {
|
||||||
name = cname
|
name = cname
|
||||||
}
|
}
|
||||||
_, records, err = lookup(name, dnsTypeAAAA)
|
_, records, err6 = lookup(name, dnsTypeAAAA)
|
||||||
if err != nil && len(addrs) > 0 {
|
if err4 != nil && err6 == nil {
|
||||||
// Ignore error because A lookup succeeded.
|
// Ignore A error because AAAA lookup succeeded.
|
||||||
err = nil
|
err4 = nil
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err6 != nil && len(addrs) > 0 {
|
||||||
return
|
// Ignore AAAA error because A lookup succeeded.
|
||||||
|
err6 = nil
|
||||||
}
|
}
|
||||||
|
if err4 != nil {
|
||||||
|
return nil, err4
|
||||||
|
}
|
||||||
|
if err6 != nil {
|
||||||
|
return nil, err6
|
||||||
|
}
|
||||||
|
|
||||||
addrs = append(addrs, convertRR_AAAA(records)...)
|
addrs = append(addrs, convertRR_AAAA(records)...)
|
||||||
return
|
return addrs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// goLookupCNAME is the native Go implementation of LookupCNAME.
|
// goLookupCNAME is the native Go implementation of LookupCNAME.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue