summaryrefslogtreecommitdiff
path: root/vendor/golang.org/x/net/internal/socket
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/golang.org/x/net/internal/socket')
-rw-r--r--vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go18
-rw-r--r--vendor/golang.org/x/net/internal/socket/msghdr_linux.go3
2 files changed, 17 insertions, 4 deletions
diff --git a/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go b/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go
index 0bfcf7afc..41883c530 100644
--- a/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go
+++ b/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go
@@ -172,7 +172,23 @@ type mmsgTmpsPool struct {
}
func (p *mmsgTmpsPool) Get() *mmsgTmps {
- return p.p.Get().(*mmsgTmps)
+ m := p.p.Get().(*mmsgTmps)
+ // Clear fields up to the len (not the cap) of the slice,
+ // assuming that the previous caller only used that many elements.
+ for i := range m.packer.sockaddrs {
+ m.packer.sockaddrs[i] = 0
+ }
+ m.packer.sockaddrs = m.packer.sockaddrs[:0]
+ for i := range m.packer.vs {
+ m.packer.vs[i] = iovec{}
+ }
+ m.packer.vs = m.packer.vs[:0]
+ for i := range m.packer.hs {
+ m.packer.hs[i].Len = 0
+ m.packer.hs[i].Hdr = msghdr{}
+ }
+ m.packer.hs = m.packer.hs[:0]
+ return m
}
func (p *mmsgTmpsPool) Put(tmps *mmsgTmps) {
diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux.go
index c3c7cc4c8..5a38798cc 100644
--- a/vendor/golang.org/x/net/internal/socket/msghdr_linux.go
+++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux.go
@@ -17,9 +17,6 @@ func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) {
if sa != nil {
h.Name = (*byte)(unsafe.Pointer(&sa[0]))
h.Namelen = uint32(len(sa))
- } else {
- h.Name = nil
- h.Namelen = 0
}
}