| 
					
				 | 
			
			
				@@ -82,7 +82,7 @@ func (handler *VMessInboundHandler) HandleConnection(connection net.Conn) error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	readFinish.Lock() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	writeFinish.Lock() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	go handleInput(request, connection, input, readFinish) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	go handleInput(request, connection, input, &readFinish) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	responseKey := md5.Sum(request.RequestKey[:]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	responseIV := md5.Sum(request.RequestIV[:]) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -100,7 +100,7 @@ func (handler *VMessInboundHandler) HandleConnection(connection net.Conn) error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if data, open := <-output; open { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		buffer = append(buffer, data...) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		responseWriter.Write(buffer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		go handleOutput(request, responseWriter, output, writeFinish) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		go handleOutput(request, responseWriter, output, &writeFinish) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		writeFinish.Lock() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -112,7 +112,7 @@ func (handler *VMessInboundHandler) HandleConnection(connection net.Conn) error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-func handleInput(request *protocol.VMessRequest, reader io.Reader, input chan<- []byte, finish sync.Mutex) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func handleInput(request *protocol.VMessRequest, reader io.Reader, input chan<- []byte, finish *sync.Mutex) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	defer close(input) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	defer finish.Unlock() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -125,7 +125,7 @@ func handleInput(request *protocol.VMessRequest, reader io.Reader, input chan<- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	v2net.ReaderToChan(input, requestReader) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-func handleOutput(request *protocol.VMessRequest, writer io.Writer, output <-chan []byte, finish sync.Mutex) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func handleOutput(request *protocol.VMessRequest, writer io.Writer, output <-chan []byte, finish *sync.Mutex) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	v2net.ChanToWriter(writer, output) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	finish.Unlock() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |