|  | @@ -11,6 +11,7 @@ import (
 | 
	
		
			
				|  |  |  	"v2ray.com/core"
 | 
	
		
			
				|  |  |  	"v2ray.com/core/common"
 | 
	
		
			
				|  |  |  	"v2ray.com/core/common/buf"
 | 
	
		
			
				|  |  | +	"v2ray.com/core/common/functions"
 | 
	
		
			
				|  |  |  	"v2ray.com/core/common/net"
 | 
	
		
			
				|  |  |  	"v2ray.com/core/common/protocol"
 | 
	
		
			
				|  |  |  	"v2ray.com/core/common/retry"
 | 
	
	
		
			
				|  | @@ -159,7 +160,7 @@ func (v *Handler) Process(ctx context.Context, link *core.Link, dialer proxy.Dia
 | 
	
		
			
				|  |  |  		return buf.Copy(bodyReader, output, buf.UpdateActivity(timer))
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	if err := signal.ExecuteParallel(ctx, requestDone, responseDone); err != nil {
 | 
	
		
			
				|  |  | +	if err := signal.ExecuteParallel(ctx, requestDone, functions.CloseOnSuccess(responseDone, functions.Close(output))); err != nil {
 | 
	
		
			
				|  |  |  		return newError("connection ends").Base(err)
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 |