56 lines
1.2 KiB
Go
56 lines
1.2 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.
|
|
|
|
// +build aix darwin dragonfly freebsd hurd linux netbsd openbsd solaris
|
|
|
|
package net
|
|
|
|
import "internal/poll"
|
|
|
|
var (
|
|
// Placeholders for saving original socket system calls.
|
|
origSocket = socketFunc
|
|
origClose = poll.CloseFunc
|
|
origConnect = connectFunc
|
|
origListen = listenFunc
|
|
origAccept = poll.AcceptFunc
|
|
origGetsockoptInt = getsockoptIntFunc
|
|
|
|
extraTestHookInstallers []func()
|
|
extraTestHookUninstallers []func()
|
|
)
|
|
|
|
func installTestHooks() {
|
|
socketFunc = sw.Socket
|
|
poll.CloseFunc = sw.Close
|
|
connectFunc = sw.Connect
|
|
listenFunc = sw.Listen
|
|
poll.AcceptFunc = sw.Accept
|
|
getsockoptIntFunc = sw.GetsockoptInt
|
|
|
|
for _, fn := range extraTestHookInstallers {
|
|
fn()
|
|
}
|
|
}
|
|
|
|
func uninstallTestHooks() {
|
|
socketFunc = origSocket
|
|
poll.CloseFunc = origClose
|
|
connectFunc = origConnect
|
|
listenFunc = origListen
|
|
poll.AcceptFunc = origAccept
|
|
getsockoptIntFunc = origGetsockoptInt
|
|
|
|
for _, fn := range extraTestHookUninstallers {
|
|
fn()
|
|
}
|
|
}
|
|
|
|
// forceCloseSockets must be called only from TestMain.
|
|
func forceCloseSockets() {
|
|
for s := range sw.Sockets() {
|
|
poll.CloseFunc(s)
|
|
}
|
|
}
|