]> Cypherpunks repositories - gostls13.git/commitdiff
net: change windows netFD finalizer to behave similar to unix
authorAlex Brainman <alex.brainman@gmail.com>
Wed, 5 Dec 2012 04:26:18 +0000 (15:26 +1100)
committerAlex Brainman <alex.brainman@gmail.com>
Wed, 5 Dec 2012 04:26:18 +0000 (15:26 +1100)
R=dave, mikioh.mikioh
CC=golang-dev
https://golang.org/cl/6873046

src/pkg/net/fd_windows.go

index b88c5d474b6904893fb5dce9144768f07da69081..44b6663af9e90360b780dc28bfbf4e8ab63ff943 100644 (file)
@@ -300,7 +300,6 @@ func allocFD(fd syscall.Handle, family, sotype int, net string) *netFD {
                net:    net,
                closec: make(chan bool),
        }
-       runtime.SetFinalizer(netfd, (*netFD).Close)
        return netfd
 }
 
@@ -319,6 +318,7 @@ func newFD(fd syscall.Handle, family, proto int, net string) (*netFD, error) {
 func (fd *netFD) setAddr(laddr, raddr Addr) {
        fd.laddr = laddr
        fd.raddr = raddr
+       runtime.SetFinalizer(fd, (*netFD).closesocket)
 }
 
 func (fd *netFD) connect(ra syscall.Sockaddr) error {
@@ -398,6 +398,10 @@ func (fd *netFD) CloseWrite() error {
        return fd.shutdown(syscall.SHUT_WR)
 }
 
+func (fd *netFD) closesocket() error {
+       return closesocket(fd.sysfd)
+}
+
 // Read from network.
 
 type readOp struct {