Try to fix UDP error

This commit is contained in:
yaotthaha-vscode 2021-12-01 23:06:00 +08:00 committed by yuhan6665
parent 7c240e8630
commit 4fc284a8e9
3 changed files with 17 additions and 4 deletions

View file

@ -4,6 +4,7 @@ import (
"crypto/cipher"
"crypto/rand"
"errors"
"syscall"
"time"
"github.com/lucas-clemente/quic-go"
@ -15,12 +16,12 @@ import (
)
type sysConn struct {
conn net.PacketConn
conn *net.UDPConn
header internet.PacketHeader
auth cipher.AEAD
}
func wrapSysConn(rawConn net.PacketConn, config *Config) (*sysConn, error) {
func wrapSysConn(rawConn *net.UDPConn, config *Config) (*sysConn, error) {
header, err := getHeader(config)
if err != nil {
return nil, err
@ -128,6 +129,14 @@ func (c *sysConn) LocalAddr() net.Addr {
return c.conn.LocalAddr()
}
func (c *sysConn) SetReadBuffer(bytes int) error {
return c.conn.SetReadBuffer(bytes)
}
func (c *sysConn) SetWriteBuffer(bytes int) error {
return c.conn.SetWriteBuffer(bytes)
}
func (c *sysConn) SetDeadline(t time.Time) error {
return c.conn.SetDeadline(t)
}
@ -140,6 +149,10 @@ func (c *sysConn) SetWriteDeadline(t time.Time) error {
return c.conn.SetWriteDeadline(t)
}
func (c *sysConn) SyscallConn() (syscall.RawConn, error) {
return c.conn.SyscallConn()
}
type interConn struct {
stream quic.Stream
local net.Addr

View file

@ -154,7 +154,7 @@ func (s *clientSessions) openConnection(destAddr net.Addr, config *Config, tlsCo
KeepAlive: true,
}
conn, err := wrapSysConn(rawConn, config)
conn, err := wrapSysConn(rawConn.(*net.UDPConn), config)
if err != nil {
rawConn.Close()
return nil, err

View file

@ -108,7 +108,7 @@ func Listen(ctx context.Context, address net.Address, port net.Port, streamSetti
MaxIncomingUniStreams: -1,
}
conn, err := wrapSysConn(rawConn, config)
conn, err := wrapSysConn(rawConn.(*net.UDPConn), config)
if err != nil {
conn.Close()
return nil, err