mirror of
https://github.com/golang/go
synced 2024-11-19 03:54:42 -07:00
dc5b5239e8
forceCloseSockets is just designed as a kingston valve for TestMain function and is not suitable to keep track of inflight sockets. Fixes #15525. Change-Id: Id967fe5b8da99bb08b699cc45e07bbc3dfc3ae3d Reviewed-on: https://go-review.googlesource.com/23505 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
54 lines
1.2 KiB
Go
54 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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris
|
|
|
|
package net
|
|
|
|
var (
|
|
// Placeholders for saving original socket system calls.
|
|
origSocket = socketFunc
|
|
origClose = closeFunc
|
|
origConnect = connectFunc
|
|
origListen = listenFunc
|
|
origAccept = acceptFunc
|
|
origGetsockoptInt = getsockoptIntFunc
|
|
|
|
extraTestHookInstallers []func()
|
|
extraTestHookUninstallers []func()
|
|
)
|
|
|
|
func installTestHooks() {
|
|
socketFunc = sw.Socket
|
|
closeFunc = sw.Close
|
|
connectFunc = sw.Connect
|
|
listenFunc = sw.Listen
|
|
acceptFunc = sw.Accept
|
|
getsockoptIntFunc = sw.GetsockoptInt
|
|
|
|
for _, fn := range extraTestHookInstallers {
|
|
fn()
|
|
}
|
|
}
|
|
|
|
func uninstallTestHooks() {
|
|
socketFunc = origSocket
|
|
closeFunc = origClose
|
|
connectFunc = origConnect
|
|
listenFunc = origListen
|
|
acceptFunc = origAccept
|
|
getsockoptIntFunc = origGetsockoptInt
|
|
|
|
for _, fn := range extraTestHookUninstallers {
|
|
fn()
|
|
}
|
|
}
|
|
|
|
// forceCloseSockets must be called only from TestMain.
|
|
func forceCloseSockets() {
|
|
for s := range sw.Sockets() {
|
|
closeFunc(s)
|
|
}
|
|
}
|