diff options
| author | Mateusz Poliwczak <mpoliwczak34@gmail.com> | 2024-04-13 07:01:44 +0000 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2024-04-14 18:23:45 +0000 |
| commit | 71d84ee7b4e42ea9f35f409f169bebd44a360331 (patch) | |
| tree | 2d31030030a8804cbaa582d9a144c64dd6613012 /src/net/lookup_windows.go | |
| parent | 37f482223f331c4400797f72158fcf1eaa1793c4 (diff) | |
| download | go-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.go | 51 |
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) |
