1
0
mirror of https://github.com/golang/go synced 2024-11-26 12:27:57 -07:00
go/src/net/main_windows_test.go
Alex Brainman 44623c2ece net: use WSASocket instead of socket call
WSASocket (unlike socket call) allows to create sockets that
will not be inherited by child process. So call WSASocket to
save on using syscall.ForkLock and calling syscall.CloseOnExec.

Some very old versions of Windows do not have that functionality.
Call socket, if WSASocket failed, to support these.

Change-Id: I2dab9fa00d1a8609dd6feae1c9cc31d4e55b8cb5
Reviewed-on: https://go-review.googlesource.com/72590
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-11-07 22:04:15 +00:00

46 lines
1.1 KiB
Go

// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package net
import "internal/poll"
var (
// Placeholders for saving original socket system calls.
origSocket = socketFunc
origWSASocket = wsaSocketFunc
origClosesocket = poll.CloseFunc
origConnect = connectFunc
origConnectEx = poll.ConnectExFunc
origListen = listenFunc
origAccept = poll.AcceptFunc
)
func installTestHooks() {
socketFunc = sw.Socket
wsaSocketFunc = sw.WSASocket
poll.CloseFunc = sw.Closesocket
connectFunc = sw.Connect
poll.ConnectExFunc = sw.ConnectEx
listenFunc = sw.Listen
poll.AcceptFunc = sw.AcceptEx
}
func uninstallTestHooks() {
socketFunc = origSocket
wsaSocketFunc = origWSASocket
poll.CloseFunc = origClosesocket
connectFunc = origConnect
poll.ConnectExFunc = origConnectEx
listenFunc = origListen
poll.AcceptFunc = origAccept
}
// forceCloseSockets must be called only from TestMain.
func forceCloseSockets() {
for s := range sw.Sockets() {
poll.CloseFunc(s)
}
}