|  | @@ -68,6 +68,7 @@ func NewVMessRequestReader(vUserSet user.UserSet) *VMessRequestReader {
 | 
	
		
			
				|  |  |  // Read reads a VMessRequest from a byte stream.
 | 
	
		
			
				|  |  |  func (this *VMessRequestReader) Read(reader io.Reader) (*VMessRequest, error) {
 | 
	
		
			
				|  |  |  	buffer := alloc.NewSmallBuffer()
 | 
	
		
			
				|  |  | +	defer buffer.Release()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	nBytes, err := v2net.ReadAllBytes(reader, buffer.Value[:vmess.IDBytesLen])
 | 
	
		
			
				|  |  |  	if err != nil {
 | 
	
	
		
			
				|  | @@ -102,9 +103,9 @@ func (this *VMessRequestReader) Read(reader io.Reader) (*VMessRequest, error) {
 | 
	
		
			
				|  |  |  		return nil, proxy.InvalidProtocolVersion
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	request.RequestIV = buffer.Value[1:17]       // 16 bytes
 | 
	
		
			
				|  |  | -	request.RequestKey = buffer.Value[17:33]     // 16 bytes
 | 
	
		
			
				|  |  | -	request.ResponseHeader = buffer.Value[33:37] // 4 bytes
 | 
	
		
			
				|  |  | +	request.RequestIV = append([]byte(nil), buffer.Value[1:17]...)       // 16 bytes
 | 
	
		
			
				|  |  | +	request.RequestKey = append([]byte(nil), buffer.Value[17:33]...)     // 16 bytes
 | 
	
		
			
				|  |  | +	request.ResponseHeader = append([]byte(nil), buffer.Value[33:37]...) // 4 bytes
 | 
	
		
			
				|  |  |  	request.Command = buffer.Value[37]
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	request.Port = v2net.PortFromBytes(buffer.Value[38:40])
 | 
	
	
		
			
				|  | @@ -135,7 +136,8 @@ func (this *VMessRequestReader) Read(reader io.Reader) (*VMessRequest, error) {
 | 
	
		
			
				|  |  |  			return nil, err
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		bufferLen += 1 + domainLength
 | 
	
		
			
				|  |  | -		request.Address = v2net.DomainAddress(string(buffer.Value[42 : 42+domainLength]))
 | 
	
		
			
				|  |  | +		domainBytes := append([]byte(nil), buffer.Value[42 : 42+domainLength]...)
 | 
	
		
			
				|  |  | +		request.Address = v2net.DomainAddress(string(domainBytes))
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	_, err = v2net.ReadAllBytes(decryptor, buffer.Value[bufferLen:bufferLen+4])
 |