| 
					
				 | 
			
			
				@@ -14,19 +14,19 @@ import ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	v2net "github.com/v2ray/v2ray-core/net" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// VNext is the next VPoint server in the connection chain. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// VNext is the next Point server in the connection chain. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 type VNextServer struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	Address v2net.VAddress // Address of VNext server 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	Users   []core.VUser   // User accounts for accessing VNext. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Address v2net.Address // Address of VNext server 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Users   []core.User   // User accounts for accessing VNext. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 type VMessOutboundHandler struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	vPoint    *core.VPoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	dest      v2net.VAddress 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	vPoint    *core.Point 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	dest      v2net.Address 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	vNextList []VNextServer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-func NewVMessOutboundHandler(vp *core.VPoint, vNextList []VNextServer, dest v2net.VAddress) *VMessOutboundHandler { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func NewVMessOutboundHandler(vp *core.Point, vNextList []VNextServer, dest v2net.Address) *VMessOutboundHandler { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	handler := new(VMessOutboundHandler) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	handler.vPoint = vp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	handler.dest = dest 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -34,7 +34,7 @@ func NewVMessOutboundHandler(vp *core.VPoint, vNextList []VNextServer, dest v2ne 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return handler 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-func (handler *VMessOutboundHandler) pickVNext() (v2net.VAddress, core.VUser) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (handler *VMessOutboundHandler) pickVNext() (v2net.Address, core.User) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	vNextLen := len(handler.vNextList) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if vNextLen == 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		panic("Zero vNext is configured.") 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -50,7 +50,7 @@ func (handler *VMessOutboundHandler) pickVNext() (v2net.VAddress, core.VUser) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return vNext.Address, vNextUser 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-func (handler *VMessOutboundHandler) Start(ray core.OutboundVRay) error { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (handler *VMessOutboundHandler) Start(ray core.OutboundRay) error { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	vNextAddress, vNextUser := handler.pickVNext() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	request := new(vmessio.VMessRequest) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -66,7 +66,7 @@ func (handler *VMessOutboundHandler) Start(ray core.OutboundVRay) error { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-func (handler *VMessOutboundHandler) startCommunicate(request *vmessio.VMessRequest, dest v2net.VAddress, ray core.OutboundVRay) error { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (handler *VMessOutboundHandler) startCommunicate(request *vmessio.VMessRequest, dest v2net.Address, ray core.OutboundRay) error { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	conn, err := net.Dial("tcp", dest.String()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	log.Debug("VMessOutbound dialing tcp: %s", dest.String()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if err != nil { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -155,7 +155,7 @@ func (handler *VMessOutboundHandler) waitForFinish(finish <-chan bool) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 type VMessOutboundHandlerFactory struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-func (factory *VMessOutboundHandlerFactory) Create(vp *core.VPoint, rawConfig []byte, destination v2net.VAddress) (core.OutboundConnectionHandler, error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (factory *VMessOutboundHandlerFactory) Create(vp *core.Point, rawConfig []byte, destination v2net.Address) (core.OutboundConnectionHandler, error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	config, err := loadOutboundConfig(rawConfig) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		panic(log.Error("Failed to load VMess outbound config: %v", err)) 
			 |