mirror of
https://github.com/golang/go
synced 2024-11-26 12:27:57 -07:00
44623c2ece
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>
46 lines
1.1 KiB
Go
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)
|
|
}
|
|
}
|