]> Cypherpunks repositories - gostls13.git/commitdiff
net: add missing close socket code
authorAlex Brainman <alex.brainman@gmail.com>
Wed, 5 Dec 2012 04:13:03 +0000 (15:13 +1100)
committerAlex Brainman <alex.brainman@gmail.com>
Wed, 5 Dec 2012 04:13:03 +0000 (15:13 +1100)
R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/6868067

src/pkg/net/fd_windows.go
src/pkg/net/timeout_test.go

index 351f9271c72d22337478e551028546c8f781933e..b88c5d474b6904893fb5dce9144768f07da69081 100644 (file)
@@ -557,7 +557,7 @@ func (fd *netFD) accept(toAddr func(syscall.Sockaddr) Addr) (*netFD, error) {
        s, err := syscall.Socket(fd.family, fd.sotype, 0)
        if err != nil {
                syscall.ForkLock.RUnlock()
-               return nil, err
+               return nil, &OpError{"socket", fd.net, fd.laddr, err}
        }
        syscall.CloseOnExec(s)
        syscall.ForkLock.RUnlock()
@@ -565,6 +565,7 @@ func (fd *netFD) accept(toAddr func(syscall.Sockaddr) Addr) (*netFD, error) {
        // Associate our new socket with IOCP.
        onceStartServer.Do(startServer)
        if _, err := syscall.CreateIoCompletionPort(s, resultsrv.iocp, 0, 0); err != nil {
+               closesocket(s)
                return nil, &OpError{"CreateIoCompletionPort", fd.net, fd.laddr, err}
        }
 
@@ -582,7 +583,7 @@ func (fd *netFD) accept(toAddr func(syscall.Sockaddr) Addr) (*netFD, error) {
        err = syscall.Setsockopt(s, syscall.SOL_SOCKET, syscall.SO_UPDATE_ACCEPT_CONTEXT, (*byte)(unsafe.Pointer(&fd.sysfd)), int32(unsafe.Sizeof(fd.sysfd)))
        if err != nil {
                closesocket(s)
-               return nil, err
+               return nil, &OpError{"Setsockopt", fd.net, fd.laddr, err}
        }
 
        // Get local and peer addr out of AcceptEx buffer.
index 42a121f3c5e2a0d7411869b42beb1fdb529362cd..21223cc74ad6fa477183d1321ecf47bc90113625 100644 (file)
@@ -332,6 +332,7 @@ func TestReadWriteDeadline(t *testing.T) {
        if err != nil {
                t.Fatalf("ListenTCP on :0: %v", err)
        }
+       defer ln.Close()
 
        lnquit := make(chan bool)