|  | @@ -50,7 +50,9 @@ func (this *HttpProxyServer) Listen(port v2net.Port) error {
 | 
											
												
													
														|  |  	if err != nil {
 |  |  	if err != nil {
 | 
											
												
													
														|  |  		return err
 |  |  		return err
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  | 
 |  | +	this.Lock()
 | 
											
												
													
														|  |  	this.tcpListener = tcpListener
 |  |  	this.tcpListener = tcpListener
 | 
											
												
													
														|  | 
 |  | +	this.Unlock()
 | 
											
												
													
														|  |  	this.accepting = true
 |  |  	this.accepting = true
 | 
											
												
													
														|  |  	go this.accept()
 |  |  	go this.accept()
 | 
											
												
													
														|  |  	return nil
 |  |  	return nil
 | 
											
										
											
												
													
														|  | @@ -216,7 +218,7 @@ func (this *HttpProxyServer) handlePlainHTTP(request *http.Request, dest v2net.D
 | 
											
												
													
														|  |  	request.Host = request.URL.Host
 |  |  	request.Host = request.URL.Host
 | 
											
												
													
														|  |  	stripHopByHopHeaders(request)
 |  |  	stripHopByHopHeaders(request)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -	requestBuffer := alloc.NewBuffer().Clear()
 |  | 
 | 
											
												
													
														|  | 
 |  | +	requestBuffer := alloc.NewBuffer().Clear() // Don't release this buffer as it is passed into a Packet.
 | 
											
												
													
														|  |  	request.Write(requestBuffer)
 |  |  	request.Write(requestBuffer)
 | 
											
												
													
														|  |  	log.Info("Request to remote:\n%s", string(requestBuffer.Value))
 |  |  	log.Info("Request to remote:\n%s", string(requestBuffer.Value))
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -229,13 +231,12 @@ func (this *HttpProxyServer) handlePlainHTTP(request *http.Request, dest v2net.D
 | 
											
												
													
														|  |  	go func() {
 |  |  	go func() {
 | 
											
												
													
														|  |  		defer wg.Done()
 |  |  		defer wg.Done()
 | 
											
												
													
														|  |  		responseReader := bufio.NewReader(NewChanReader(ray.InboundOutput()))
 |  |  		responseReader := bufio.NewReader(NewChanReader(ray.InboundOutput()))
 | 
											
												
													
														|  | -		responseBuffer := alloc.NewBuffer()
 |  | 
 | 
											
												
													
														|  | -		defer responseBuffer.Release()
 |  | 
 | 
											
												
													
														|  |  		response, err := http.ReadResponse(responseReader, request)
 |  |  		response, err := http.ReadResponse(responseReader, request)
 | 
											
												
													
														|  |  		if err != nil {
 |  |  		if err != nil {
 | 
											
												
													
														|  |  			return
 |  |  			return
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  | -		responseBuffer.Clear()
 |  | 
 | 
											
												
													
														|  | 
 |  | +		responseBuffer := alloc.NewBuffer().Clear()
 | 
											
												
													
														|  | 
 |  | +		defer responseBuffer.Release()
 | 
											
												
													
														|  |  		response.Write(responseBuffer)
 |  |  		response.Write(responseBuffer)
 | 
											
												
													
														|  |  		writer.Write(responseBuffer.Value)
 |  |  		writer.Write(responseBuffer.Value)
 | 
											
												
													
														|  |  		response.Body.Close()
 |  |  		response.Body.Close()
 |