diff options
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.go | 17 |
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 |