forked from quic-go/quic-go
Merge pull request #2886 from lucas-clemente/fix-syscalls
only use syscalls on platforms that we're actually testing
This commit is contained in:
25
conn_ecn.go
25
conn_ecn.go
@@ -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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// +build windows
|
||||
// +build !darwin,!linux
|
||||
|
||||
package quic
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// +build !darwin,!windows
|
||||
// +build linux
|
||||
|
||||
package quic
|
||||
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user