summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroshi SHIBATA <[email protected]>2024-07-16 11:44:20 +0900
committerHiroshi SHIBATA <[email protected]>2024-07-17 17:37:57 +0900
commitf4c642edb108c5365c282b95cf429a0313b1c452 (patch)
treedae69a6b3e42ad90d81acca0102b1beb974ac951
parent2b3bfbc4c722d1d051a29721a1a8f86d2c3939a7 (diff)
Fixed fd leak from TCPServer
``` Leaked file descriptor: HTTPSProxyTest#test_https_proxy_ssl_connection: 8 : #<TCPServer:fd 8, AF_INET, 127.0.0.1, 63104> ```
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/11171
-rw-r--r--test/net/http/test_https_proxy.rb63
1 files changed, 32 insertions, 31 deletions
diff --git a/test/net/http/test_https_proxy.rb b/test/net/http/test_https_proxy.rb
index 4225f9836c..f4c6aa0b6a 100644
--- a/test/net/http/test_https_proxy.rb
+++ b/test/net/http/test_https_proxy.rb
@@ -56,38 +56,39 @@ class HTTPSProxyTest < Test::Unit::TestCase
omit 'autoload problem. see [ruby-dev:45021][Bug #5786]'
end
- tcpserver = TCPServer.new("127.0.0.1", 0)
- ctx = OpenSSL::SSL::SSLContext.new
- ctx.key = OpenSSL::PKey.read(read_fixture("server.key"))
- ctx.cert = OpenSSL::X509::Certificate.new(read_fixture("server.crt"))
- serv = OpenSSL::SSL::SSLServer.new(tcpserver, ctx)
+ TCPServer.open("127.0.0.1", 0) {|tcpserver|
+ ctx = OpenSSL::SSL::SSLContext.new
+ ctx.key = OpenSSL::PKey.read(read_fixture("server.key"))
+ ctx.cert = OpenSSL::X509::Certificate.new(read_fixture("server.crt"))
+ serv = OpenSSL::SSL::SSLServer.new(tcpserver, ctx)
- _, port, _, _ = serv.addr
- client_thread = Thread.new {
- proxy = Net::HTTP.Proxy("127.0.0.1", port, 'user', 'password', true)
- http = proxy.new("foo.example.org", 8000)
- http.use_ssl = true
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
- begin
- http.start
- rescue EOFError
- end
- }
- server_thread = Thread.new {
- sock = serv.accept
- begin
- proxy_request = sock.gets("\r\n\r\n")
- assert_equal(
- "CONNECT foo.example.org:8000 HTTP/1.1\r\n" +
- "Host: foo.example.org:8000\r\n" +
- "Proxy-Authorization: Basic dXNlcjpwYXNzd29yZA==\r\n" +
- "\r\n",
- proxy_request,
- "[ruby-core:96672]")
- ensure
- sock.close
- end
+ _, port, _, _ = serv.addr
+ client_thread = Thread.new {
+ proxy = Net::HTTP.Proxy("127.0.0.1", port, 'user', 'password', true)
+ http = proxy.new("foo.example.org", 8000)
+ http.use_ssl = true
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
+ begin
+ http.start
+ rescue EOFError
+ end
+ }
+ server_thread = Thread.new {
+ sock = serv.accept
+ begin
+ proxy_request = sock.gets("\r\n\r\n")
+ assert_equal(
+ "CONNECT foo.example.org:8000 HTTP/1.1\r\n" +
+ "Host: foo.example.org:8000\r\n" +
+ "Proxy-Authorization: Basic dXNlcjpwYXNzd29yZA==\r\n" +
+ "\r\n",
+ proxy_request,
+ "[ruby-core:96672]")
+ ensure
+ sock.close
+ end
+ }
+ assert_join_threads([client_thread, server_thread])
}
- assert_join_threads([client_thread, server_thread])
end
end if defined?(OpenSSL)