diff options
| author | database64128 <free122448@hotmail.com> | 2025-08-02 00:40:36 +0800 |
|---|---|---|
| committer | Sean Liao <sean@liao.dev> | 2025-08-21 18:17:35 -0700 |
| commit | 13c082601db45c25fc85f4cdac9cc3bab7c4329f (patch) | |
| tree | eceac85b1ac3c26e30eedf584b40cd23c15f8527 /src/internal | |
| parent | 9b0a507735e8c0210f7f8a1cb875836133c1cee9 (diff) | |
| download | go-13c082601db45c25fc85f4cdac9cc3bab7c4329f.tar.xz | |
internal/poll: permit nil destination address in WriteMsg{Inet4,Inet6}
For #74841
Change-Id: If2ea23b1eb23e32680bd576f54a0020d7e115797
Reviewed-on: https://go-review.googlesource.com/c/go/+/692436
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
Reviewed-by: Damien Neil <dneil@google.com>
Diffstat (limited to 'src/internal')
| -rw-r--r-- | src/internal/poll/fd_windows.go | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/internal/poll/fd_windows.go b/src/internal/poll/fd_windows.go index ebb2abcbf8..5d6d78d8bb 100644 --- a/src/internal/poll/fd_windows.go +++ b/src/internal/poll/fd_windows.go @@ -1422,10 +1422,13 @@ func (fd *FD) WriteMsgInet4(p []byte, oob []byte, sa *syscall.SockaddrInet4) (in if o.rsa == nil { o.rsa = new(syscall.RawSockaddrAny) } - len := sockaddrInet4ToRaw(o.rsa, sa) + var nameLen int32 + if sa != nil { + nameLen = sockaddrInet4ToRaw(o.rsa, sa) + } msg := newWSAMsg(p, oob, 0) msg.Name = (syscall.Pointer)(unsafe.Pointer(o.rsa)) - msg.Namelen = len + msg.Namelen = nameLen n, err := fd.execIO(o, func(o *operation) (qty uint32, err error) { err = windows.WSASendMsg(fd.Sysfd, &msg, 0, nil, &o.o, nil) return qty, err @@ -1449,9 +1452,12 @@ func (fd *FD) WriteMsgInet6(p []byte, oob []byte, sa *syscall.SockaddrInet6) (in o.rsa = new(syscall.RawSockaddrAny) } msg := newWSAMsg(p, oob, 0) - len := sockaddrInet6ToRaw(o.rsa, sa) + var nameLen int32 + if sa != nil { + nameLen = sockaddrInet6ToRaw(o.rsa, sa) + } msg.Name = (syscall.Pointer)(unsafe.Pointer(o.rsa)) - msg.Namelen = len + msg.Namelen = nameLen n, err := fd.execIO(o, func(o *operation) (qty uint32, err error) { err = windows.WSASendMsg(fd.Sysfd, &msg, 0, nil, &o.o, nil) return qty, err |
