aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/golang.org/x/net/internal/socket/rawconn_msg.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/golang.org/x/net/internal/socket/rawconn_msg.go')
-rw-r--r--vendor/golang.org/x/net/internal/socket/rawconn_msg.go17
1 files changed, 6 insertions, 11 deletions
diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_msg.go b/vendor/golang.org/x/net/internal/socket/rawconn_msg.go
index 610b1a1..ba53f56 100644
--- a/vendor/golang.org/x/net/internal/socket/rawconn_msg.go
+++ b/vendor/golang.org/x/net/internal/socket/rawconn_msg.go
@@ -2,14 +2,13 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || windows || zos
// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows zos
package socket
import (
"os"
- "runtime"
- "syscall"
)
func (c *Conn) recvMsg(m *Message, flags int) error {
@@ -25,10 +24,7 @@ func (c *Conn) recvMsg(m *Message, flags int) error {
var n int
fn := func(s uintptr) bool {
n, operr = recvmsg(s, &h, flags)
- if operr == syscall.EAGAIN || (runtime.GOOS == "zos" && operr == syscall.EWOULDBLOCK) {
- return false
- }
- return true
+ return ioComplete(flags, operr)
}
if err := c.c.Read(fn); err != nil {
return err
@@ -55,17 +51,16 @@ func (c *Conn) sendMsg(m *Message, flags int) error {
vs := make([]iovec, len(m.Buffers))
var sa []byte
if m.Addr != nil {
- sa = marshalInetAddr(m.Addr)
+ var a [sizeofSockaddrInet6]byte
+ n := marshalInetAddr(m.Addr, a[:])
+ sa = a[:n]
}
h.pack(vs, m.Buffers, m.OOB, sa)
var operr error
var n int
fn := func(s uintptr) bool {
n, operr = sendmsg(s, &h, flags)
- if operr == syscall.EAGAIN || (runtime.GOOS == "zos" && operr == syscall.EWOULDBLOCK) {
- return false
- }
- return true
+ return ioComplete(flags, operr)
}
if err := c.c.Write(fn); err != nil {
return err