net: fix socket duplication error handling on Windows

Calls to dupSocket may fail, but the error is not properly handled
because the surrounding code incorrectly checks for nil error instead
of non-nil error.

I'm not aware of any code paths that would trigger this error, and
I haven't been able to create a test case that does so, but this
change fixes the error handling to correctly propagate any errors
from dupSocket.

Change-Id: I5ffd3cbe8ed58a83634f3b97c0878a7c73e0505e
Reviewed-on: https://go-review.googlesource.com/c/go/+/734821
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Damien Neil <dneil@google.com>
This commit is contained in:
qmuntal
2026-01-08 15:50:15 +01:00
committed by Quim Muntal
parent 30d0b40264
commit cbe153806e
2 changed files with 2 additions and 2 deletions

View File

@@ -248,7 +248,7 @@ func (fd *netFD) dup() (*os.File, error) {
err := fd.pfd.RawControl(func(fd uintptr) {
h, syserr = dupSocket(syscall.Handle(fd))
})
if err != nil {
if err == nil {
err = syserr
}
if err != nil {

View File

@@ -39,7 +39,7 @@ func dupFileSocket(f *os.File) (syscall.Handle, error) {
err = sc.Control(func(fd uintptr) {
h, syserr = dupSocket(syscall.Handle(fd))
})
if err != nil {
if err == nil {
err = syserr
}
if err != nil {