diff --git a/common/tls/utls_client.go b/common/tls/utls_client.go index b3b91970..6df1a561 100644 --- a/common/tls/utls_client.go +++ b/common/tls/utls_client.go @@ -146,6 +146,8 @@ func newUTLSClient(router adapter.Router, serverAddress string, options option.O id = utls.HelloAndroid_11_OkHttp case "random": id = utls.HelloRandomized + default: + return nil, E.New("unknown uTLS fingerprint: ", options.UTLS.Fingerprint) } return &utlsClientConfig{&tlsConfig, id}, nil } diff --git a/go.mod b/go.mod index 5a407967..5a169660 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/pires/go-proxyproto v0.6.2 github.com/refraction-networking/utls v1.1.2 github.com/sagernet/quic-go v0.0.0-20220818150011-de611ab3e2bb - github.com/sagernet/sing v0.0.0-20221006081821-c4e9bf11fa00 + github.com/sagernet/sing v0.0.0-20221008120626-60a9910eefe4 github.com/sagernet/sing-dns v0.0.0-20220929010544-ee843807aae3 github.com/sagernet/sing-shadowsocks v0.0.0-20220819002358-7461bb09a8f6 github.com/sagernet/sing-tun v0.0.0-20221005115555-9a556307f6a3 diff --git a/go.sum b/go.sum index 80c39b64..8af90292 100644 --- a/go.sum +++ b/go.sum @@ -145,8 +145,8 @@ github.com/sagernet/quic-go v0.0.0-20220818150011-de611ab3e2bb h1:wc0yQ+SBn4TaTY github.com/sagernet/quic-go v0.0.0-20220818150011-de611ab3e2bb/go.mod h1:MIccjRKnPTjWwAOpl+AUGWOkzyTd9tERytudxu+1ra4= github.com/sagernet/sing v0.0.0-20220812082120-05f9836bff8f/go.mod h1:QVsS5L/ZA2Q5UhQwLrn0Trw+msNd/NPGEhBKR/ioWiY= github.com/sagernet/sing v0.0.0-20220817130738-ce854cda8522/go.mod h1:QVsS5L/ZA2Q5UhQwLrn0Trw+msNd/NPGEhBKR/ioWiY= -github.com/sagernet/sing v0.0.0-20221006081821-c4e9bf11fa00 h1:UkgEDnH3L9eBxob+3AbE9wM4mjFnRLnaPjfLSNe+C74= -github.com/sagernet/sing v0.0.0-20221006081821-c4e9bf11fa00/go.mod h1:zvgDYKI+vCAW9RyfyrKTgleI+DOa8lzHMPC7VZo3OL4= +github.com/sagernet/sing v0.0.0-20221008120626-60a9910eefe4 h1:LO7xMvMGhYmjQg2vjhTzsODyzs9/WLYu5Per+/8jIeo= +github.com/sagernet/sing v0.0.0-20221008120626-60a9910eefe4/go.mod h1:zvgDYKI+vCAW9RyfyrKTgleI+DOa8lzHMPC7VZo3OL4= github.com/sagernet/sing-dns v0.0.0-20220929010544-ee843807aae3 h1:AEdyJxEDFq38z0pBX/0MpikQapGMIch+1ADe9k1bJqU= github.com/sagernet/sing-dns v0.0.0-20220929010544-ee843807aae3/go.mod h1:SrvWLfOSlnFmH32CWXicfilAGgIXR0VjrH6yRbuXYww= github.com/sagernet/sing-shadowsocks v0.0.0-20220819002358-7461bb09a8f6 h1:JJfDeYYhWunvtxsU/mOVNTmFQmnzGx9dY034qG6G3g4= diff --git a/transport/v2raywebsocket/conn.go b/transport/v2raywebsocket/conn.go index c0d0770e..e050e2f2 100644 --- a/transport/v2raywebsocket/conn.go +++ b/transport/v2raywebsocket/conn.go @@ -10,6 +10,7 @@ import ( "time" C "github.com/sagernet/sing-box/constant" + "github.com/sagernet/sing/common" "github.com/sagernet/sing/common/buf" E "github.com/sagernet/sing/common/exceptions" "github.com/sagernet/websocket" @@ -68,8 +69,12 @@ func (c *WebsocketConn) SetDeadline(t time.Time) error { return os.ErrInvalid } -func (c *WebsocketConn) FrontHeadroom() int { - return frontHeadroom +func (c *WebsocketConn) Upstream() any { + return c.Conn.NetConn() +} + +func (c *WebsocketConn) UpstreamWriter() any { + return c.Writer } type EarlyWebsocketConn struct { @@ -210,8 +215,12 @@ func (c *EarlyWebsocketConn) SetWriteDeadline(t time.Time) error { return c.conn.SetWriteDeadline(t) } -func (c *EarlyWebsocketConn) FrontHeadroom() int { - return frontHeadroom +func (c *EarlyWebsocketConn) Upstream() any { + return common.PtrOrNil(c.conn) +} + +func (c *EarlyWebsocketConn) LazyHeadroom() bool { + return c.conn == nil } func wrapError(err error) error { diff --git a/transport/v2raywebsocket/writer.go b/transport/v2raywebsocket/writer.go index 0d2d45ac..fbb61f0f 100644 --- a/transport/v2raywebsocket/writer.go +++ b/transport/v2raywebsocket/writer.go @@ -10,8 +10,6 @@ import ( "github.com/sagernet/websocket" ) -const frontHeadroom = 14 - type Writer struct { *websocket.Conn writer N.ExtendedWriter @@ -85,5 +83,5 @@ func (w *Writer) Upstream() any { } func (w *Writer) FrontHeadroom() int { - return frontHeadroom + return 14 }