mirror of
https://github.com/golang/go.git
synced 2026-01-29 07:02:05 +03:00
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:
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user