# File lib/bundler/fetcher.rb, line 89
    def connection
      return @connection if @connection

      needs_ssl = @remote_uri.scheme == "https" ||
        Bundler.settings[:ssl_verify_mode] ||
        Bundler.settings[:ssl_client_cert]
      raise SSLError if needs_ssl && !defined?(OpenSSL)

      @connection = Net::HTTP::Persistent.new 'bundler', :ENV

      if @remote_uri.scheme == "https"
        @connection.verify_mode = (Bundler.settings[:ssl_verify_mode] ||
          OpenSSL::SSL::VERIFY_PEER)
        @connection.cert_store = bundler_cert_store
      end

      if Bundler.settings[:ssl_client_cert]
        pem = File.read(Bundler.settings[:ssl_client_cert])
        @connection.cert = OpenSSL::X509::Certificate.new(pem)
        @connection.key  = OpenSSL::PKey::RSA.new(pem)
      end

      @connection.read_timeout = @api_timeout
      @connection.override_headers["User-Agent"] = self.class.user_agent

      @connection
    end