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 }