Commit dfbd42e4 authored by Michael Stapelberg's avatar Michael Stapelberg Committed by Russ Cox

net: fix lookup of AAAA-only hosts without cgo

Fixes #3762.

R=rsc
CC=golang-dev
https://golang.org/cl/6303106
parent ec6b5123
...@@ -237,24 +237,30 @@ func goLookupIP(name string) (addrs []IP, err error) { ...@@ -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.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment