aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlex Brainman <alex.brainman@gmail.com>2016-04-19 14:31:41 +1000
committerAlex Brainman <alex.brainman@gmail.com>2016-04-19 05:53:25 +0000
commit45bb8874314635fc40945da3f765a7844482bfef (patch)
tree17aa6458458c38208b875a2312bd154607c4e0f6 /src
parentf947429983d3906127432120b49fa3362e7de374 (diff)
downloadgo-45bb8874314635fc40945da3f765a7844482bfef.tar.xz
net: stop using GetHostByName and GetServByName
Go 1.6 requires Windows XP or later. I have: C:\>systeminfo | findstr /B /C:"OS Name" /C:"OS Version" OS Name: Microsoft Windows XP Professional OS Version: 5.1.2600 Service Pack 3 Build 2600 Running "go test" PASSes on my system after this CL is applied. Change-Id: Id59d169138c4a4183322c89ee7e766fb74d381fa Reviewed-on: https://go-review.googlesource.com/22209 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src')
-rw-r--r--src/net/fd_windows.go5
-rw-r--r--src/net/lookup_windows.go109
2 files changed, 2 insertions, 112 deletions
diff --git a/src/net/fd_windows.go b/src/net/fd_windows.go
index ca46bf9361..49e79d6a95 100644
--- a/src/net/fd_windows.go
+++ b/src/net/fd_windows.go
@@ -42,11 +42,6 @@ func sysInit() {
initErr = os.NewSyscallError("wsastartup", e)
}
canCancelIO = syscall.LoadCancelIoEx() == nil
- if syscall.LoadGetAddrInfo() == nil {
- lookupPort = newLookupPort
- lookupIP = newLookupIP
- }
-
hasLoadSetFileCompletionNotificationModes = syscall.LoadSetFileCompletionNotificationModes() == nil
if hasLoadSetFileCompletionNotificationModes {
// It's not safe to use FILE_SKIP_COMPLETION_PORT_ON_SUCCESS if non IFS providers are installed:
diff --git a/src/net/lookup_windows.go b/src/net/lookup_windows.go
index 7a04cc8998..5f65c2d00d 100644
--- a/src/net/lookup_windows.go
+++ b/src/net/lookup_windows.go
@@ -12,11 +12,6 @@ import (
"unsafe"
)
-var (
- lookupPort = oldLookupPort
- lookupIP = oldLookupIP
-)
-
func getprotobyname(name string) (proto int, err error) {
p, err := syscall.GetProtoByName(name)
if err != nil {
@@ -71,61 +66,7 @@ func lookupHost(ctx context.Context, name string) ([]string, error) {
return addrs, nil
}
-func gethostbyname(name string) (addrs []IPAddr, err error) {
- // caller already acquired thread
- h, err := syscall.GetHostByName(name)
- if err != nil {
- return nil, os.NewSyscallError("gethostbyname", err)
- }
- switch h.AddrType {
- case syscall.AF_INET:
- i := 0
- addrs = make([]IPAddr, 100) // plenty of room to grow
- for p := (*[100](*[4]byte))(unsafe.Pointer(h.AddrList)); i < cap(addrs) && p[i] != nil; i++ {
- addrs[i] = IPAddr{IP: IPv4(p[i][0], p[i][1], p[i][2], p[i][3])}
- }
- addrs = addrs[0:i]
- default: // TODO(vcc): Implement non IPv4 address lookups.
- return nil, syscall.EWINDOWS
- }
- return addrs, nil
-}
-
-func oldLookupIP(ctx context.Context, name string) ([]IPAddr, error) {
- // GetHostByName return value is stored in thread local storage.
- // Start new os thread before the call to prevent races.
- type ret struct {
- addrs []IPAddr
- err error
- }
- ch := make(chan ret, 1)
- go func() {
- acquireThread()
- defer releaseThread()
- runtime.LockOSThread()
- defer runtime.UnlockOSThread()
- addrs, err := gethostbyname(name)
- ch <- ret{addrs: addrs, err: err}
- }()
- select {
- case r := <-ch:
- if r.err != nil {
- r.err = &DNSError{Err: r.err.Error(), Name: name}
- }
- return r.addrs, r.err
- case <-ctx.Done():
- // TODO(bradfitz,brainman): cancel the ongoing
- // gethostbyname? 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,
- }
- }
-}
-
-func newLookupIP(ctx context.Context, name string) ([]IPAddr, error) {
+func lookupIP(ctx context.Context, name string) ([]IPAddr, error) {
// TODO(bradfitz,brainman): use ctx?
type ret struct {
@@ -184,53 +125,7 @@ func newLookupIP(ctx context.Context, name string) ([]IPAddr, error) {
}
}
-func getservbyname(network, service string) (int, error) {
- acquireThread()
- defer releaseThread()
- switch network {
- case "tcp4", "tcp6":
- network = "tcp"
- case "udp4", "udp6":
- network = "udp"
- }
- s, err := syscall.GetServByName(service, network)
- if err != nil {
- return 0, os.NewSyscallError("getservbyname", err)
- }
- return int(syscall.Ntohs(s.Port)), nil
-}
-
-func oldLookupPort(ctx context.Context, network, service string) (int, error) {
- // GetServByName return value is stored in thread local storage.
- // Start new os thread before the call to prevent races.
- type result struct {
- port int
- err error
- }
- ch := make(chan result) // unbuffered
- go func() {
- acquireThread()
- defer releaseThread()
- runtime.LockOSThread()
- defer runtime.UnlockOSThread()
- port, err := getservbyname(network, service)
- select {
- case ch <- result{port: port, err: err}:
- case <-ctx.Done():
- }
- }()
- select {
- case r := <-ch:
- if r.err != nil {
- r.err = &DNSError{Err: r.err.Error(), Name: network + "/" + service}
- }
- return r.port, r.err
- case <-ctx.Done():
- return 0, mapErr(ctx.Err())
- }
-}
-
-func newLookupPort(ctx context.Context, network, service string) (int, error) {
+func lookupPort(ctx context.Context, network, service string) (int, error) {
// TODO(bradfitz): finish ctx plumbing. Nothing currently depends on this.
acquireThread()
defer releaseThread()