|  | @@ -108,23 +108,20 @@ func handleRequest(conn *net.TCPConn, request *vmessio.VMessRequest, input <-cha
 | 
	
		
			
				|  |  |  	if err != nil {
 | 
	
		
			
				|  |  |  		log.Error("VMessOut: Failed to serialize VMess request: %v", err)
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | -	//conn.Write(buffer)
 | 
	
		
			
				|  |  | -	data, open := <-input
 | 
	
		
			
				|  |  | -	if open {
 | 
	
		
			
				|  |  | -		encryptRequestWriter.Crypt(data)
 | 
	
		
			
				|  |  | -		buffer = append(buffer, data...)
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	_, err = conn.Write(buffer)
 | 
	
		
			
				|  |  | -	if err != nil {
 | 
	
		
			
				|  |  | -		log.Error("VMessOut: Failed to write VMess request: %v", err)
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	if !open {
 | 
	
		
			
				|  |  | -		return nil
 | 
	
		
			
				|  |  | +  // Send first packet of payload together with request, in favor of small requests.
 | 
	
		
			
				|  |  | +	payload, open := <-input
 | 
	
		
			
				|  |  | +	if open {
 | 
	
		
			
				|  |  | +		encryptRequestWriter.Crypt(payload)
 | 
	
		
			
				|  |  | +		buffer = append(buffer, payload...)
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +    _, err = conn.Write(buffer)
 | 
	
		
			
				|  |  | +    if err != nil {
 | 
	
		
			
				|  |  | +      log.Error("VMessOut: Failed to write VMess request: %v", err)
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +    v2net.ChanToWriter(encryptRequestWriter, input)
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	v2net.ChanToWriter(encryptRequestWriter, input)
 | 
	
		
			
				|  |  |  	return nil
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |