|  | @@ -140,18 +140,16 @@ void HttpConnectHandshaker::OnWriteDone(void* arg, grpc_error* error) {
 | 
	
		
			
				|  |  |    } else {
 | 
	
		
			
				|  |  |      // Otherwise, read the response.
 | 
	
		
			
				|  |  |      // The read callback inherits our ref to the handshaker.
 | 
	
		
			
				|  |  | -    grpc_endpoint* ep = handshaker->args_->endpoint;
 | 
	
		
			
				|  |  | -    grpc_slice_buffer* read_buffer = handshaker->args_->read_buffer;
 | 
	
		
			
				|  |  | -    grpc_closure* closure = &handshaker->response_read_closure_;
 | 
	
		
			
				|  |  |      lock.Unlock();
 | 
	
		
			
				|  |  | -    grpc_endpoint_read(ep, read_buffer, closure, /*urgent=*/true);
 | 
	
		
			
				|  |  | +    grpc_endpoint_read(handshaker->args_->endpoint,
 | 
	
		
			
				|  |  | +                       handshaker->args_->read_buffer,
 | 
	
		
			
				|  |  | +                       &handshaker->response_read_closure_, /*urgent=*/true);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Callback invoked for reading HTTP CONNECT response.
 | 
	
		
			
				|  |  |  void HttpConnectHandshaker::OnReadDone(void* arg, grpc_error* error) {
 | 
	
		
			
				|  |  |    auto* handshaker = static_cast<HttpConnectHandshaker*>(arg);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    ReleasableMutexLock lock(&handshaker->mu_);
 | 
	
		
			
				|  |  |    if (error != GRPC_ERROR_NONE || handshaker->is_shutdown_) {
 | 
	
		
			
				|  |  |      // If the read failed or we're shutting down, clean up and invoke the
 | 
	
	
		
			
				|  | @@ -204,11 +202,10 @@ void HttpConnectHandshaker::OnReadDone(void* arg, grpc_error* error) {
 | 
	
		
			
				|  |  |    // at the Content-Length: header).
 | 
	
		
			
				|  |  |    if (handshaker->http_parser_.state != GRPC_HTTP_BODY) {
 | 
	
		
			
				|  |  |      grpc_slice_buffer_reset_and_unref_internal(handshaker->args_->read_buffer);
 | 
	
		
			
				|  |  | -    grpc_endpoint* ep = handshaker->args_->endpoint;
 | 
	
		
			
				|  |  | -    grpc_slice_buffer* read_buffer = handshaker->args_->read_buffer;
 | 
	
		
			
				|  |  | -    grpc_closure* closure = &handshaker->response_read_closure_;
 | 
	
		
			
				|  |  |      lock.Unlock();
 | 
	
		
			
				|  |  | -    grpc_endpoint_read(ep, read_buffer, closure, /*urgent=*/true);
 | 
	
		
			
				|  |  | +    grpc_endpoint_read(handshaker->args_->endpoint,
 | 
	
		
			
				|  |  | +                       handshaker->args_->read_buffer,
 | 
	
		
			
				|  |  | +                       &handshaker->response_read_closure_, /*urgent=*/true);
 | 
	
		
			
				|  |  |      return;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    // Make sure we got a 2xx response.
 | 
	
	
		
			
				|  | @@ -323,12 +320,9 @@ void HttpConnectHandshaker::DoHandshake(grpc_tcp_server_acceptor* acceptor,
 | 
	
		
			
				|  |  |    gpr_free(header_strings);
 | 
	
		
			
				|  |  |    // Take a new ref to be held by the write callback.
 | 
	
		
			
				|  |  |    Ref().release();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  grpc_endpoint* ep = args->endpoint;
 | 
	
		
			
				|  |  | -  grpc_slice_buffer* write_buffer = &write_buffer_;
 | 
	
		
			
				|  |  | -  grpc_closure* closure = &request_done_closure_;
 | 
	
		
			
				|  |  |    lock.Unlock();
 | 
	
		
			
				|  |  | -  grpc_endpoint_write(ep, write_buffer, closure, nullptr);
 | 
	
		
			
				|  |  | +  grpc_endpoint_write(args->endpoint, &write_buffer_, &request_done_closure_,
 | 
	
		
			
				|  |  | +                      nullptr);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  HttpConnectHandshaker::HttpConnectHandshaker() {
 |