aboutsummaryrefslogtreecommitdiff
path: root/src/net/lookup_windows.go
diff options
context:
space:
mode:
authorMateusz Poliwczak <mpoliwczak34@gmail.com>2024-04-13 07:01:44 +0000
committerGopher Robot <gobot@golang.org>2024-04-14 18:23:45 +0000
commit71d84ee7b4e42ea9f35f409f169bebd44a360331 (patch)
tree2d31030030a8804cbaa582d9a144c64dd6613012 /src/net/lookup_windows.go
parent37f482223f331c4400797f72158fcf1eaa1793c4 (diff)
downloadgo-71d84ee7b4e42ea9f35f409f169bebd44a360331.tar.xz
net: add Unwrap to *DNSError
Fixes #63116 Change-Id: Iab8c415555ab85097be6d2d133b3349c5219a23b GitHub-Last-Rev: 8a8177b9af5509ebbaa701b06c79126aae7510a8 GitHub-Pull-Request: golang/go#63348 Reviewed-on: https://go-review.googlesource.com/c/go/+/532217 Auto-Submit: Ian Lance Taylor <iant@google.com> Reviewed-by: Damien Neil <dneil@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Commit-Queue: Ian Lance Taylor <iant@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Diffstat (limited to 'src/net/lookup_windows.go')
-rw-r--r--src/net/lookup_windows.go51
1 files changed, 15 insertions, 36 deletions
diff --git a/src/net/lookup_windows.go b/src/net/lookup_windows.go
index 946622761c..7d415bee4f 100644
--- a/src/net/lookup_windows.go
+++ b/src/net/lookup_windows.go
@@ -73,12 +73,7 @@ func lookupProtocol(ctx context.Context, name string) (int, error) {
if proto, err := lookupProtocolMap(name); err == nil {
return proto, nil
}
-
- dnsError := &DNSError{Err: r.err.Error(), Name: name}
- if r.err == errNoSuchHost {
- dnsError.IsNotFound = true
- }
- r.err = dnsError
+ r.err = newDNSError(r.err, name, "")
}
return r.proto, r.err
case <-ctx.Done():
@@ -130,7 +125,7 @@ func (r *Resolver) lookupIP(ctx context.Context, network, name string) ([]IPAddr
var result *syscall.AddrinfoW
name16p, err := syscall.UTF16PtrFromString(name)
if err != nil {
- return nil, &DNSError{Name: name, Err: err.Error()}
+ return nil, newDNSError(err, name, "")
}
dnsConf := getSystemDNSConfig()
@@ -144,12 +139,7 @@ func (r *Resolver) lookupIP(ctx context.Context, network, name string) ([]IPAddr
}
}
if e != nil {
- err := winError("getaddrinfow", e)
- dnsError := &DNSError{Err: err.Error(), Name: name}
- if err == errNoSuchHost {
- dnsError.IsNotFound = true
- }
- return nil, dnsError
+ return nil, newDNSError(winError("getaddrinfow", e), name, "")
}
defer syscall.FreeAddrInfoW(result)
addrs := make([]IPAddr, 0, 5)
@@ -164,7 +154,7 @@ func (r *Resolver) lookupIP(ctx context.Context, network, name string) ([]IPAddr
zone := zoneCache.name(int((*syscall.RawSockaddrInet6)(addr).Scope_id))
addrs = append(addrs, IPAddr{IP: copyIP(a[:]), Zone: zone})
default:
- return nil, &DNSError{Err: syscall.EWINDOWS.Error(), Name: name}
+ return nil, newDNSError(syscall.EWINDOWS, name, "")
}
}
return addrs, nil
@@ -196,11 +186,7 @@ func (r *Resolver) lookupIP(ctx context.Context, network, name string) ([]IPAddr
//
// For now we just let it finish and write to the
// buffered channel.
- return nil, &DNSError{
- Name: name,
- Err: ctx.Err().Error(),
- IsTimeout: ctx.Err() == context.DeadlineExceeded,
- }
+ return nil, newDNSError(mapErr(ctx.Err()), name, "")
}
}
@@ -252,14 +238,13 @@ func (r *Resolver) lookupPort(ctx context.Context, network, service string) (int
// for _WSAHOST_NOT_FOUND here to match the cgo (unix) version
// cgo_unix.go (cgoLookupServicePort).
if e == _WSATYPE_NOT_FOUND || e == _WSAHOST_NOT_FOUND {
- return 0, &DNSError{Err: "unknown port", Name: network + "/" + service, IsNotFound: true}
+ return 0, newDNSError(errUnknownPort, network+"/"+service, "")
}
- err := os.NewSyscallError("getaddrinfow", e)
- return 0, &DNSError{Err: err.Error(), Name: network + "/" + service}
+ return 0, newDNSError(winError("getaddrinfow", e), network+"/"+service, "")
}
defer syscall.FreeAddrInfoW(result)
if result == nil {
- return 0, &DNSError{Err: syscall.EINVAL.Error(), Name: network + "/" + service}
+ return 0, newDNSError(syscall.EINVAL, network+"/"+service, "")
}
addr := unsafe.Pointer(result.Addr)
switch result.Family {
@@ -270,7 +255,7 @@ func (r *Resolver) lookupPort(ctx context.Context, network, service string) (int
a := (*syscall.RawSockaddrInet6)(addr)
return int(syscall.Ntohs(a.Port)), nil
}
- return 0, &DNSError{Err: syscall.EINVAL.Error(), Name: network + "/" + service}
+ return 0, newDNSError(syscall.EINVAL, network+"/"+service, "")
}
func (r *Resolver) lookupCNAME(ctx context.Context, name string) (string, error) {
@@ -295,8 +280,7 @@ func (r *Resolver) lookupCNAME(ctx context.Context, name string) (string, error)
return absDomainName(name), nil
}
if e != nil {
- err := winError("dnsquery", e)
- return "", &DNSError{Err: err.Error(), Name: name, IsNotFound: err == errNoSuchHost}
+ return "", newDNSError(winError("dnsquery", e), name, "")
}
defer syscall.DnsRecordListFree(rec, 1)
@@ -327,8 +311,7 @@ func (r *Resolver) lookupSRV(ctx context.Context, service, proto, name string) (
var rec *syscall.DNSRecord
e := syscall.DnsQuery(target, syscall.DNS_TYPE_SRV, 0, nil, &rec, nil)
if e != nil {
- err := winError("dnsquery", e)
- return "", nil, &DNSError{Err: err.Error(), Name: name, IsNotFound: err == errNoSuchHost}
+ return "", nil, newDNSError(winError("dnsquery", e), name, "")
}
defer syscall.DnsRecordListFree(rec, 1)
@@ -357,8 +340,7 @@ func (r *Resolver) lookupMX(ctx context.Context, name string) ([]*MX, error) {
var rec *syscall.DNSRecord
e := syscall.DnsQuery(name, syscall.DNS_TYPE_MX, 0, nil, &rec, nil)
if e != nil {
- err := winError("dnsquery", e)
- return nil, &DNSError{Err: err.Error(), Name: name, IsNotFound: err == errNoSuchHost}
+ return nil, newDNSError(winError("dnsquery", e), name, "")
}
defer syscall.DnsRecordListFree(rec, 1)
@@ -387,8 +369,7 @@ func (r *Resolver) lookupNS(ctx context.Context, name string) ([]*NS, error) {
var rec *syscall.DNSRecord
e := syscall.DnsQuery(name, syscall.DNS_TYPE_NS, 0, nil, &rec, nil)
if e != nil {
- err := winError("dnsquery", e)
- return nil, &DNSError{Err: err.Error(), Name: name, IsNotFound: err == errNoSuchHost}
+ return nil, newDNSError(winError("dnsquery", e), name, "")
}
defer syscall.DnsRecordListFree(rec, 1)
@@ -416,8 +397,7 @@ func (r *Resolver) lookupTXT(ctx context.Context, name string) ([]string, error)
var rec *syscall.DNSRecord
e := syscall.DnsQuery(name, syscall.DNS_TYPE_TEXT, 0, nil, &rec, nil)
if e != nil {
- err := winError("dnsquery", e)
- return nil, &DNSError{Err: err.Error(), Name: name, IsNotFound: err == errNoSuchHost}
+ return nil, newDNSError(winError("dnsquery", e), name, "")
}
defer syscall.DnsRecordListFree(rec, 1)
@@ -454,8 +434,7 @@ func (r *Resolver) lookupAddr(ctx context.Context, addr string) ([]string, error
var rec *syscall.DNSRecord
e := syscall.DnsQuery(arpa, syscall.DNS_TYPE_PTR, 0, nil, &rec, nil)
if e != nil {
- err := winError("dnsquery", e)
- return nil, &DNSError{Err: err.Error(), Name: addr, IsNotFound: err == errNoSuchHost}
+ return nil, newDNSError(winError("dnsquery", e), addr, "")
}
defer syscall.DnsRecordListFree(rec, 1)