From 985d3d307c3669094f77b52caffef60157b7d648 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Thu, 29 Sep 2016 09:09:14 -0700 Subject: [PATCH] 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 TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/net/lookup_windows.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/net/lookup_windows.go b/src/net/lookup_windows.go index 9435fef839..5abfc844f7 100644 --- a/src/net/lookup_windows.go +++ b/src/net/lookup_windows.go @@ -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) -- 2.48.1