Fix v2ray websocket transport

This commit is contained in:
世界 2023-09-16 22:30:42 +08:00
parent d17e93384b
commit 9dcd427743
No known key found for this signature in database
GPG Key ID: CD109927C34A63C4
1 changed files with 12 additions and 0 deletions

View File

@ -7,6 +7,7 @@ import (
"net"
"net/http"
"os"
"sync"
"time"
C "github.com/sagernet/sing-box/constant"
@ -93,6 +94,7 @@ type EarlyWebsocketConn struct {
*Client
ctx context.Context
conn *WebsocketConn
access sync.Mutex
create chan struct{}
err error
}
@ -146,6 +148,11 @@ func (c *EarlyWebsocketConn) writeRequest(content []byte) error {
}
func (c *EarlyWebsocketConn) Write(b []byte) (n int, err error) {
if c.conn != nil {
return c.conn.Write(b)
}
c.access.Lock()
defer c.access.Unlock()
if c.conn != nil {
return c.conn.Write(b)
}
@ -159,6 +166,11 @@ func (c *EarlyWebsocketConn) Write(b []byte) (n int, err error) {
}
func (c *EarlyWebsocketConn) WriteBuffer(buffer *buf.Buffer) error {
if c.conn != nil {
return c.conn.WriteBuffer(buffer)
}
c.access.Lock()
defer c.access.Unlock()
if c.conn != nil {
return c.conn.WriteBuffer(buffer)
}