Bläddra i källkod

Fix using v2ray websocket transport with detour

世界 2 år sedan
förälder
incheckning
c5902f2473
2 ändrade filer med 32 tillägg och 2 borttagningar
  1. 10 2
      transport/v2raywebsocket/client.go
  2. 22 0
      transport/v2raywebsocket/deadline.go

+ 10 - 2
transport/v2raywebsocket/client.go

@@ -42,11 +42,19 @@ func NewClient(ctx context.Context, dialer N.Dialer, serverAddr M.Socksaddr, opt
 			if err != nil {
 				return nil, err
 			}
-			return tls.ClientHandshake(ctx, conn, tlsConfig)
+			tlsConn, err := tls.ClientHandshake(ctx, conn, tlsConfig)
+			if err != nil {
+				return nil, err
+			}
+			return &deadConn{tlsConn}, nil
 		}
 	} else {
 		wsDialer.NetDialContext = func(ctx context.Context, network, addr string) (net.Conn, error) {
-			return dialer.DialContext(ctx, network, M.ParseSocksaddr(addr))
+			conn, err := dialer.DialContext(ctx, network, M.ParseSocksaddr(addr))
+			if err != nil {
+				return nil, err
+			}
+			return &deadConn{conn}, nil
 		}
 	}
 	var uri url.URL

+ 22 - 0
transport/v2raywebsocket/deadline.go

@@ -0,0 +1,22 @@
+package v2raywebsocket
+
+import (
+	"net"
+	"time"
+)
+
+type deadConn struct {
+	net.Conn
+}
+
+func (c *deadConn) SetDeadline(t time.Time) error {
+	return nil
+}
+
+func (c *deadConn) SetReadDeadline(t time.Time) error {
+	return nil
+}
+
+func (c *deadConn) SetWriteDeadline(t time.Time) error {
+	return nil
+}