Fix broken connections in pool

This commit is contained in:
Omar Roth 2019-10-25 23:06:08 -04:00
parent 7f8746fcd4
commit 202de1436d
No known key found for this signature in database
GPG Key ID: B8254FB7EC3D37F2

View File

@ -1595,7 +1595,9 @@ struct HTTPPool
end
def client(region = nil, &block)
pool.connection do |conn|
conn = pool.checkout
begin
if region
PROXY_LIST[region]?.try &.sample(40).each do |proxy|
begin
@ -1607,17 +1609,17 @@ struct HTTPPool
end
end
begin
response = yield conn
conn.unset_proxy
response
rescue ex
conn = HTTPClient.new(url)
conn.family = (url.host == "www.youtube.com") ? CONFIG.force_resolve : Socket::Family::UNSPEC
conn.read_timeout = 5.seconds
conn.connect_timeout = 5.seconds
yield conn
end
response = yield conn
conn.unset_proxy
response
rescue ex
conn = HTTPClient.new(url)
conn.family = (url.host == "www.youtube.com") ? CONFIG.force_resolve : Socket::Family::UNSPEC
conn.read_timeout = 5.seconds
conn.connect_timeout = 5.seconds
yield conn
ensure
pool.checkin(conn)
end
end