mirror of https://github.com/golang/go.git
net: make proto and port lookups fall back to baked-in maps on Windows
In https://golang.org/cl/28951 I cleaned up the lookupProtocol and lookupPort paths to be consistently case-insensitive across operating systems and to share the same baked-in maps of port & proto values that can be relied on to exist on any platform. I missed the fallback to the baked-in maps on Windows, though, which broke Windows XP. This should fix it. Fixes #17175 Change-Id: Iecd434fb684304137ee27f5521cfaa8c351a1bde Reviewed-on: https://go-review.googlesource.com/29968 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
d58219e50b
commit
985d3d307c
|
|
@ -43,7 +43,7 @@ func lookupProtocol(ctx context.Context, name string) (int, error) {
|
|||
select {
|
||||
case r := <-ch:
|
||||
if r.err != nil {
|
||||
if proto, ok := protocols[name]; ok {
|
||||
if proto, err := lookupProtocolMap(name); err == nil {
|
||||
return proto, nil
|
||||
}
|
||||
r.err = &DNSError{Err: r.err.Error(), Name: name}
|
||||
|
|
@ -150,6 +150,9 @@ func lookupPort(ctx context.Context, network, service string) (int, error) {
|
|||
var result *syscall.AddrinfoW
|
||||
e := syscall.GetAddrInfoW(nil, syscall.StringToUTF16Ptr(service), &hints, &result)
|
||||
if e != nil {
|
||||
if port, err := lookupPortMap(network, service); err == nil {
|
||||
return port, nil
|
||||
}
|
||||
return 0, &DNSError{Err: os.NewSyscallError("getaddrinfow", e).Error(), Name: network + "/" + service}
|
||||
}
|
||||
defer syscall.FreeAddrInfoW(result)
|
||||
|
|
|
|||
Loading…
Reference in New Issue