|  | @@ -35,9 +35,7 @@ func (this *VMessOutboundHandler) Dispatch(target v2net.Destination, payload *al
 | 
	
		
			
				|  |  |  		Command: command,
 | 
	
		
			
				|  |  |  		Address: target.Address(),
 | 
	
		
			
				|  |  |  		Port:    target.Port(),
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	if command == proto.RequestCommandUDP {
 | 
	
		
			
				|  |  | -		request.Option |= proto.RequestOptionChunkStream
 | 
	
		
			
				|  |  | +		Option:  proto.RequestOptionChunkStream,
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	conn, err := dialer.Dial(destination)
 | 
	
	
		
			
				|  | @@ -65,10 +63,6 @@ func (this *VMessOutboundHandler) Dispatch(target v2net.Destination, payload *al
 | 
	
		
			
				|  |  |  	go this.handleResponse(session, conn, request, destination, output, &responseFinish)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	requestFinish.Lock()
 | 
	
		
			
				|  |  | -	if tcpConn, ok := conn.(*net.TCPConn); ok {
 | 
	
		
			
				|  |  | -		tcpConn.CloseWrite()
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  	responseFinish.Lock()
 | 
	
		
			
				|  |  |  	output.Close()
 | 
	
		
			
				|  |  |  	input.Release()
 | 
	
	
		
			
				|  | @@ -97,6 +91,9 @@ func (this *VMessOutboundHandler) handleRequest(session *raw.ClientSession, conn
 | 
	
		
			
				|  |  |  		streamWriter = vmessio.NewAuthChunkWriter(streamWriter)
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	v2io.Pipe(input, streamWriter)
 | 
	
		
			
				|  |  | +	if request.Option.IsChunkStream() {
 | 
	
		
			
				|  |  | +		streamWriter.Write(alloc.NewSmallBuffer().Clear())
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  	streamWriter.Release()
 | 
	
		
			
				|  |  |  	return
 | 
	
		
			
				|  |  |  }
 |