var res *C.struct_addrinfo
gerrno, err := C.getaddrinfo(nil, (*C.char)(unsafe.Pointer(&cservice[0])), hints, &res)
if gerrno != 0 {
+ isTemporary := false
switch gerrno {
case C.EAI_SYSTEM:
if err == nil { // see golang.org/issue/6232
}
default:
err = addrinfoErrno(gerrno)
+ isTemporary = addrinfoErrno(gerrno).Temporary()
}
- return 0, &DNSError{Err: err.Error(), Name: network + "/" + service}
+ return 0, &DNSError{Err: err.Error(), Name: network + "/" + service, IsTemporary: isTemporary}
}
defer C.freeaddrinfo(res)
gerrno, err := C.getaddrinfo((*C.char)(unsafe.Pointer(&h[0])), nil, &hints, &res)
if gerrno != 0 {
isErrorNoSuchHost := false
+ isTemporary := false
switch gerrno {
case C.EAI_SYSTEM:
if err == nil {
isErrorNoSuchHost = true
default:
err = addrinfoErrno(gerrno)
+ isTemporary = addrinfoErrno(gerrno).Temporary()
}
- return nil, "", &DNSError{Err: err.Error(), Name: name, IsNotFound: isErrorNoSuchHost}
+ return nil, "", &DNSError{Err: err.Error(), Name: name, IsNotFound: isErrorNoSuchHost, IsTemporary: isTemporary}
}
defer C.freeaddrinfo(res)
}
}
if gerrno != 0 {
+ isTemporary := false
switch gerrno {
case C.EAI_SYSTEM:
if err == nil { // see golang.org/issue/6232
}
default:
err = addrinfoErrno(gerrno)
+ isTemporary = addrinfoErrno(gerrno).Temporary()
}
- return nil, &DNSError{Err: err.Error(), Name: addr}
+ return nil, &DNSError{Err: err.Error(), Name: addr, IsTemporary: isTemporary}
}
for i := 0; i < len(b); i++ {
if b[i] == 0 {