mirror of
https://github.com/XTLS/Xray-core.git
synced 2024-12-22 19:33:32 +02:00
Try to fix UDP error
This commit is contained in:
parent
7c240e8630
commit
4fc284a8e9
3 changed files with 17 additions and 4 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue