aboutsummaryrefslogtreecommitdiff
path: root/src/internal
diff options
context:
space:
mode:
authordatabase64128 <free122448@hotmail.com>2025-08-02 00:40:36 +0800
committerSean Liao <sean@liao.dev>2025-08-21 18:17:35 -0700
commit13c082601db45c25fc85f4cdac9cc3bab7c4329f (patch)
treeeceac85b1ac3c26e30eedf584b40cd23c15f8527 /src/internal
parent9b0a507735e8c0210f7f8a1cb875836133c1cee9 (diff)
downloadgo-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.go14
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