diff --git a/src/pkg/net/fd_windows.go b/src/pkg/net/fd_windows.go index 040439ab3b..5f43125892 100644 --- a/src/pkg/net/fd_windows.go +++ b/src/pkg/net/fd_windows.go @@ -371,9 +371,10 @@ func (fd *netFD) Close() error { } func (fd *netFD) shutdown(how int) error { - if fd == nil || fd.sysfd == syscall.InvalidHandle { - return syscall.EINVAL + if err := fd.incref(false); err != nil { + return err } + defer fd.decref() err := syscall.Shutdown(fd.sysfd, how) if err != nil { return &OpError{"shutdown", fd.net, fd.laddr, err}