From a8187405537c7cfc747b14d45c5ee961323dec63 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 25 Jul 2014 07:55:42 +0000 Subject: remote_fetcher.rb: fix leaked FDs * lib/rubygems/remote_fetcher.rb (request): close connections. * lib/rubygems/request.rb (close): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46944 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/rubygems/remote_fetcher.rb | 2 ++ lib/rubygems/request.rb | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/lib/rubygems/remote_fetcher.rb b/lib/rubygems/remote_fetcher.rb index 58991caeda..d5af458dfe 100644 --- a/lib/rubygems/remote_fetcher.rb +++ b/lib/rubygems/remote_fetcher.rb @@ -337,6 +337,8 @@ class Gem::RemoteFetcher request.fetch do |req| yield req if block_given? end + ensure + request.close if request end def https?(uri) diff --git a/lib/rubygems/request.rb b/lib/rubygems/request.rb index d2f076f581..cc99d30e92 100644 --- a/lib/rubygems/request.rb +++ b/lib/rubygems/request.rb @@ -28,6 +28,12 @@ class Gem::Request @env_no_proxy = get_no_proxy_from_env end + def close + @connections.each_value do |conn| + conn.finish + end + end + def add_rubygems_trusted_certs(store) pattern = File.expand_path("./ssl_certs/*.pem", File.dirname(__FILE__)) Dir.glob(pattern).each do |ssl_cert_file| -- cgit v1.2.3