github.com/ooni/psiphon/tunnel-core@v0.0.0-20230105123940-fe12a24c96ee/oovendor/quic-go/conn_windows.go (about) 1 //go:build windows 2 // +build windows 3 4 package quic 5 6 import ( 7 "errors" 8 "fmt" 9 "net" 10 "syscall" 11 12 "golang.org/x/sys/windows" 13 ) 14 15 func newConn(c OOBCapablePacketConn) (connection, error) { 16 return &basicConn{PacketConn: c}, nil 17 } 18 19 func inspectReadBuffer(c net.PacketConn) (int, error) { 20 conn, ok := c.(interface { 21 SyscallConn() (syscall.RawConn, error) 22 }) 23 if !ok { 24 return 0, errors.New("doesn't have a SyscallConn") 25 } 26 rawConn, err := conn.SyscallConn() 27 if err != nil { 28 return 0, fmt.Errorf("couldn't get syscall.RawConn: %w", err) 29 } 30 var size int 31 var serr error 32 if err := rawConn.Control(func(fd uintptr) { 33 size, serr = windows.GetsockoptInt(windows.Handle(fd), windows.SOL_SOCKET, windows.SO_RCVBUF) 34 }); err != nil { 35 return 0, err 36 } 37 return size, serr 38 } 39 40 func (i *packetInfo) OOB() []byte { return nil }