瀏覽代碼

Avoid panic

https://github.com/XTLS/Xray-core/pull/5270#issuecomment-3483155727
RPRX 1 月之前
父節點
當前提交
e8aecbc9af
共有 2 個文件被更改,包括 8 次插入2 次删除
  1. 6 2
      app/proxyman/outbound/handler.go
  2. 2 0
      proxy/vless/outbound/outbound.go

+ 6 - 2
app/proxyman/outbound/handler.go

@@ -317,8 +317,12 @@ func (h *Handler) Dial(ctx context.Context, dest net.Destination) (stat.Connecti
 	conn, err := internet.Dial(ctx, dest, h.streamSettings)
 	conn, err := internet.Dial(ctx, dest, h.streamSettings)
 	conn = h.getStatCouterConnection(conn)
 	conn = h.getStatCouterConnection(conn)
 	outbounds := session.OutboundsFromContext(ctx)
 	outbounds := session.OutboundsFromContext(ctx)
-	ob := outbounds[len(outbounds)-1]
-	ob.Conn = conn
+	if outbounds != nil {
+		ob := outbounds[len(outbounds)-1]
+		ob.Conn = conn
+	} else {
+		// for Vision's pre-connect
+	}
 	return conn, err
 	return conn, err
 }
 }
 
 

+ 2 - 0
proxy/vless/outbound/outbound.go

@@ -176,6 +176,8 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer inte
 	}
 	}
 	defer conn.Close()
 	defer conn.Close()
 
 
+	ob.Conn = conn // for Vision's pre-connect
+
 	iConn := conn
 	iConn := conn
 	if statConn, ok := iConn.(*stat.CounterConnection); ok {
 	if statConn, ok := iConn.(*stat.CounterConnection); ok {
 		iConn = statConn.Connection
 		iConn = statConn.Connection