1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-06-16 04:35:24 +00:00

Feat: implement set buffer methods in QUIC sysConn (#1404)

This commit is contained in:
秋のかえで 2021-11-22 14:13:25 +08:00 committed by GitHub
parent 8107b73082
commit 7413246fb8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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

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