Merge pull request #2886 from lucas-clemente/fix-syscalls

only use syscalls on platforms that we're actually testing
This commit is contained in:
Marten Seemann
2020-11-20 00:03:53 +07:00
committed by GitHub
4 changed files with 26 additions and 34 deletions

View File

@@ -1,9 +1,11 @@
// +build !windows
// +build darwin linux
package quic
import (
"errors"
"fmt"
"net"
"syscall"
"time"
@@ -13,6 +15,27 @@ import (
const ecnMask uint8 = 0x3
func inspectReadBuffer(c net.PacketConn) (int, error) {
conn, ok := c.(interface {
SyscallConn() (syscall.RawConn, error)
})
if !ok {
return 0, errors.New("doesn't have a SyscallConn")
}
rawConn, err := conn.SyscallConn()
if err != nil {
return 0, fmt.Errorf("couldn't get syscall.RawConn: %w", err)
}
var size int
var serr error
if err := rawConn.Control(func(fd uintptr) {
size, serr = syscall.GetsockoptInt(int(fd), syscall.SOL_SOCKET, syscall.SO_RCVBUF)
}); err != nil {
return 0, err
}
return size, serr
}
type ecnConn struct {
ECNCapablePacketConn
oobBuffer []byte

View File

@@ -1,4 +1,4 @@
// +build windows
// +build !darwin,!linux
package quic

View File

@@ -1,4 +1,4 @@
// +build !darwin,!windows
// +build linux
package quic

View File

@@ -1,31 +0,0 @@
// +build !windows
package quic
import (
"errors"
"fmt"
"net"
"syscall"
)
func inspectReadBuffer(c net.PacketConn) (int, error) {
conn, ok := c.(interface {
SyscallConn() (syscall.RawConn, error)
})
if !ok {
return 0, errors.New("doesn't have a SyscallConn")
}
rawConn, err := conn.SyscallConn()
if err != nil {
return 0, fmt.Errorf("couldn't get syscall.RawConn: %w", err)
}
var size int
var serr error
if err := rawConn.Control(func(fd uintptr) {
size, serr = syscall.GetsockoptInt(int(fd), syscall.SOL_SOCKET, syscall.SO_RCVBUF)
}); err != nil {
return 0, err
}
return size, serr
}