summaryrefslogtreecommitdiffstats
path: root/vendor/golang.org/x/net/internal
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2017-11-13 09:09:58 -0800
committerGitHub <noreply@github.com>2017-11-13 09:09:58 -0800
commit1329aa51b605cb54ba9aae3a82a0a87b881fb7b3 (patch)
tree93cbf354ab894a560fc2cef8ef685d681b4ff889 /vendor/golang.org/x/net/internal
parent7304a61ef597970be3031b14e652fb3a4df44304 (diff)
downloadchat-1329aa51b605cb54ba9aae3a82a0a87b881fb7b3.tar.gz
chat-1329aa51b605cb54ba9aae3a82a0a87b881fb7b3.tar.bz2
chat-1329aa51b605cb54ba9aae3a82a0a87b881fb7b3.zip
Updating server dependancies. (#7816)
Diffstat (limited to 'vendor/golang.org/x/net/internal')
-rw-r--r--vendor/golang.org/x/net/internal/socket/iovec_32bit.go6
-rw-r--r--vendor/golang.org/x/net/internal/socket/iovec_64bit.go6
-rw-r--r--vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go6
-rw-r--r--vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go6
-rw-r--r--vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go6
-rw-r--r--vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go6
-rw-r--r--vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go6
-rw-r--r--vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go6
-rw-r--r--vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go129
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_posix.go6
10 files changed, 108 insertions, 75 deletions
diff --git a/vendor/golang.org/x/net/internal/socket/iovec_32bit.go b/vendor/golang.org/x/net/internal/socket/iovec_32bit.go
index d6a570c90..05d6082d1 100644
--- a/vendor/golang.org/x/net/internal/socket/iovec_32bit.go
+++ b/vendor/golang.org/x/net/internal/socket/iovec_32bit.go
@@ -10,6 +10,10 @@ package socket
import "unsafe"
func (v *iovec) set(b []byte) {
+ l := len(b)
+ if l == 0 {
+ return
+ }
v.Base = (*byte)(unsafe.Pointer(&b[0]))
- v.Len = uint32(len(b))
+ v.Len = uint32(l)
}
diff --git a/vendor/golang.org/x/net/internal/socket/iovec_64bit.go b/vendor/golang.org/x/net/internal/socket/iovec_64bit.go
index 2ae435e64..afb34ad58 100644
--- a/vendor/golang.org/x/net/internal/socket/iovec_64bit.go
+++ b/vendor/golang.org/x/net/internal/socket/iovec_64bit.go
@@ -10,6 +10,10 @@ package socket
import "unsafe"
func (v *iovec) set(b []byte) {
+ l := len(b)
+ if l == 0 {
+ return
+ }
v.Base = (*byte)(unsafe.Pointer(&b[0]))
- v.Len = uint64(len(b))
+ v.Len = uint64(l)
}
diff --git a/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go
index 100a62820..8d17a40c4 100644
--- a/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go
+++ b/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go
@@ -10,6 +10,10 @@ package socket
import "unsafe"
func (v *iovec) set(b []byte) {
+ l := len(b)
+ if l == 0 {
+ return
+ }
v.Base = (*int8)(unsafe.Pointer(&b[0]))
- v.Len = uint64(len(b))
+ v.Len = uint64(l)
}
diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go b/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go
index 3fcb04280..b8c87b72b 100644
--- a/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go
+++ b/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go
@@ -7,6 +7,10 @@
package socket
func (h *msghdr) setIov(vs []iovec) {
+ l := len(vs)
+ if l == 0 {
+ return
+ }
h.Iov = &vs[0]
- h.Iovlen = int32(len(vs))
+ h.Iovlen = int32(l)
}
diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go
index 9f671aec0..a7a5987c8 100644
--- a/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go
+++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go
@@ -10,8 +10,12 @@ package socket
import "unsafe"
func (h *msghdr) setIov(vs []iovec) {
+ l := len(vs)
+ if l == 0 {
+ return
+ }
h.Iov = &vs[0]
- h.Iovlen = uint32(len(vs))
+ h.Iovlen = uint32(l)
}
func (h *msghdr) setControl(b []byte) {
diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go
index 9f7870621..610fc4f3b 100644
--- a/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go
+++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go
@@ -10,8 +10,12 @@ package socket
import "unsafe"
func (h *msghdr) setIov(vs []iovec) {
+ l := len(vs)
+ if l == 0 {
+ return
+ }
h.Iov = &vs[0]
- h.Iovlen = uint64(len(vs))
+ h.Iovlen = uint64(l)
}
func (h *msghdr) setControl(b []byte) {
diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go b/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go
index be354ff84..71a69e251 100644
--- a/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go
+++ b/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go
@@ -5,6 +5,10 @@
package socket
func (h *msghdr) setIov(vs []iovec) {
+ l := len(vs)
+ if l == 0 {
+ return
+ }
h.Iov = &vs[0]
- h.Iovlen = uint32(len(vs))
+ h.Iovlen = uint32(l)
}
diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go
index d1b059397..6465b2073 100644
--- a/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go
+++ b/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go
@@ -13,8 +13,10 @@ func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) {
for i := range vs {
vs[i].set(bs[i])
}
- h.Iov = &vs[0]
- h.Iovlen = int32(len(vs))
+ if len(vs) > 0 {
+ h.Iov = &vs[0]
+ h.Iovlen = int32(len(vs))
+ }
if len(oob) > 0 {
h.Accrights = (*int8)(unsafe.Pointer(&oob[0]))
h.Accrightslen = int32(len(oob))
diff --git a/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go b/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go
index 109fed762..c4edd4a8d 100644
--- a/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go
+++ b/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go
@@ -119,81 +119,84 @@ func TestUDP(t *testing.T) {
t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
}
defer c.Close()
+ cc, err := socket.NewConn(c.(net.Conn))
+ if err != nil {
+ t.Fatal(err)
+ }
t.Run("Message", func(t *testing.T) {
- testUDPMessage(t, c.(net.Conn))
+ data := []byte("HELLO-R-U-THERE")
+ wm := socket.Message{
+ Buffers: bytes.SplitAfter(data, []byte("-")),
+ Addr: c.LocalAddr(),
+ }
+ if err := cc.SendMsg(&wm, 0); err != nil {
+ t.Fatal(err)
+ }
+ b := make([]byte, 32)
+ rm := socket.Message{
+ Buffers: [][]byte{b[:1], b[1:3], b[3:7], b[7:11], b[11:]},
+ }
+ if err := cc.RecvMsg(&rm, 0); err != nil {
+ t.Fatal(err)
+ }
+ if !bytes.Equal(b[:rm.N], data) {
+ t.Fatalf("got %#v; want %#v", b[:rm.N], data)
+ }
})
switch runtime.GOOS {
- case "linux":
+ case "android", "linux":
t.Run("Messages", func(t *testing.T) {
- testUDPMessages(t, c.(net.Conn))
+ data := []byte("HELLO-R-U-THERE")
+ wmbs := bytes.SplitAfter(data, []byte("-"))
+ wms := []socket.Message{
+ {Buffers: wmbs[:1], Addr: c.LocalAddr()},
+ {Buffers: wmbs[1:], Addr: c.LocalAddr()},
+ }
+ n, err := cc.SendMsgs(wms, 0)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if n != len(wms) {
+ t.Fatalf("got %d; want %d", n, len(wms))
+ }
+ b := make([]byte, 32)
+ rmbs := [][][]byte{{b[:len(wmbs[0])]}, {b[len(wmbs[0]):]}}
+ rms := []socket.Message{
+ {Buffers: rmbs[0]},
+ {Buffers: rmbs[1]},
+ }
+ n, err = cc.RecvMsgs(rms, 0)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if n != len(rms) {
+ t.Fatalf("got %d; want %d", n, len(rms))
+ }
+ nn := 0
+ for i := 0; i < n; i++ {
+ nn += rms[i].N
+ }
+ if !bytes.Equal(b[:nn], data) {
+ t.Fatalf("got %#v; want %#v", b[:nn], data)
+ }
})
}
-}
-func testUDPMessage(t *testing.T, c net.Conn) {
- cc, err := socket.NewConn(c)
- if err != nil {
- t.Fatal(err)
- }
- data := []byte("HELLO-R-U-THERE")
+ // The behavior of transmission for zero byte paylaod depends
+ // on each platform implementation. Some may transmit only
+ // protocol header and options, other may transmit nothing.
+ // We test only that SendMsg and SendMsgs will not crash with
+ // empty buffers.
wm := socket.Message{
- Buffers: bytes.SplitAfter(data, []byte("-")),
+ Buffers: [][]byte{{}},
Addr: c.LocalAddr(),
}
- if err := cc.SendMsg(&wm, 0); err != nil {
- t.Fatal(err)
- }
- b := make([]byte, 32)
- rm := socket.Message{
- Buffers: [][]byte{b[:1], b[1:3], b[3:7], b[7:11], b[11:]},
- }
- if err := cc.RecvMsg(&rm, 0); err != nil {
- t.Fatal(err)
- }
- if !bytes.Equal(b[:rm.N], data) {
- t.Fatalf("got %#v; want %#v", b[:rm.N], data)
- }
-}
-
-func testUDPMessages(t *testing.T, c net.Conn) {
- cc, err := socket.NewConn(c)
- if err != nil {
- t.Fatal(err)
- }
- data := []byte("HELLO-R-U-THERE")
- wmbs := bytes.SplitAfter(data, []byte("-"))
+ cc.SendMsg(&wm, 0)
wms := []socket.Message{
- {Buffers: wmbs[:1], Addr: c.LocalAddr()},
- {Buffers: wmbs[1:], Addr: c.LocalAddr()},
- }
- n, err := cc.SendMsgs(wms, 0)
- if err != nil {
- t.Fatal(err)
- }
- if n != len(wms) {
- t.Fatalf("got %d; want %d", n, len(wms))
- }
- b := make([]byte, 32)
- rmbs := [][][]byte{{b[:len(wmbs[0])]}, {b[len(wmbs[0]):]}}
- rms := []socket.Message{
- {Buffers: rmbs[0]},
- {Buffers: rmbs[1]},
- }
- n, err = cc.RecvMsgs(rms, 0)
- if err != nil {
- t.Fatal(err)
- }
- if n != len(rms) {
- t.Fatalf("got %d; want %d", n, len(rms))
- }
- nn := 0
- for i := 0; i < n; i++ {
- nn += rms[i].N
- }
- if !bytes.Equal(b[:nn], data) {
- t.Fatalf("got %#v; want %#v", b[:nn], data)
+ {Buffers: [][]byte{{}}, Addr: c.LocalAddr()},
}
+ cc.SendMsgs(wms, 0)
}
func BenchmarkUDP(b *testing.B) {
@@ -230,7 +233,7 @@ func BenchmarkUDP(b *testing.B) {
}
})
switch runtime.GOOS {
- case "linux":
+ case "android", "linux":
wms := make([]socket.Message, M)
for i := range wms {
wms[i].Buffers = [][]byte{data}
diff --git a/vendor/golang.org/x/net/internal/socket/sys_posix.go b/vendor/golang.org/x/net/internal/socket/sys_posix.go
index 9a0dbcfb9..dc130c27e 100644
--- a/vendor/golang.org/x/net/internal/socket/sys_posix.go
+++ b/vendor/golang.org/x/net/internal/socket/sys_posix.go
@@ -34,7 +34,7 @@ func marshalSockaddr(ip net.IP, port int, zone string) []byte {
if ip4 := ip.To4(); ip4 != nil {
b := make([]byte, sizeofSockaddrInet)
switch runtime.GOOS {
- case "linux", "solaris", "windows":
+ case "android", "linux", "solaris", "windows":
NativeEndian.PutUint16(b[:2], uint16(sysAF_INET))
default:
b[0] = sizeofSockaddrInet
@@ -47,7 +47,7 @@ func marshalSockaddr(ip net.IP, port int, zone string) []byte {
if ip6 := ip.To16(); ip6 != nil && ip.To4() == nil {
b := make([]byte, sizeofSockaddrInet6)
switch runtime.GOOS {
- case "linux", "solaris", "windows":
+ case "android", "linux", "solaris", "windows":
NativeEndian.PutUint16(b[:2], uint16(sysAF_INET6))
default:
b[0] = sizeofSockaddrInet6
@@ -69,7 +69,7 @@ func parseInetAddr(b []byte, network string) (net.Addr, error) {
}
var af int
switch runtime.GOOS {
- case "linux", "solaris", "windows":
+ case "android", "linux", "solaris", "windows":
af = int(NativeEndian.Uint16(b[:2]))
default:
af = int(b[1])