class Bundler::PersistentHTTP

Public Instance Methods

connection_for(uri) click to toggle source
# File lib/bundler/vendored_persistent.rb, line 22
def connection_for(uri)
  connection = super
  warn_old_tls_version_rubygems_connection(uri, connection)
  connection
end
warn_old_tls_version_rubygems_connection(uri, connection) click to toggle source
# File lib/bundler/vendored_persistent.rb, line 28
  def warn_old_tls_version_rubygems_connection(uri, connection)
    return unless connection.use_ssl?
    return unless (uri.host || "").end_with?("rubygems.org")

    socket = connection.instance_variable_get(:@socket)
    return unless socket
    socket_io = socket.io
    return unless socket_io.respond_to?(:ssl_version)
    ssl_version = socket_io.ssl_version

    case ssl_version
    when /TLSv([\d\.]+)/
      version = Gem::Version.new($1)
      if version < Gem::Version.new("1.2")
        Bundler.ui.warn \
          "Warning: Your Ruby version is compiled against a copy of OpenSSL that is very old. " \
          "Starting in January 2018, RubyGems.org will refuse connection requests from these " \
          "very old versions of OpenSSL. If you will need to continue installing gems after " \
          "January 2018, please follow this guide to upgrade: http://ruby.to/tls-outdated.",
          :wrap => true
      end
    end
  end
end