From 81f3efcbc5837af5e918ace44d8034e6c5ac0fb7 Mon Sep 17 00:00:00 2001 From: Kazuki Yamaguchi Date: Sun, 5 Feb 2017 00:03:39 +0900 Subject: test/utils: let server_loop close socket Close the socket by server_loop rather than by server_proc. This reduces code duplication. --- test/test_ssl.rb | 22 ++++++++-------------- test/utils.rb | 17 +++++++---------- 2 files changed, 15 insertions(+), 24 deletions(-) diff --git a/test/test_ssl.rb b/test/test_ssl.rb index 418365a4..3917793e 100644 --- a/test/test_ssl.rb +++ b/test/test_ssl.rb @@ -206,21 +206,16 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase def test_starttls server_proc = -> (ctx, ssl) { - begin - while line = ssl.gets - if line =~ /^STARTTLS$/ - ssl.write("x") - ssl.flush - ssl.accept - next - end - ssl.write(line) + while line = ssl.gets + if line =~ /^STARTTLS$/ + ssl.write("x") + ssl.flush + ssl.accept + break end - rescue OpenSSL::SSL::SSLError - rescue IOError - ensure - ssl.close rescue nil + ssl.write(line) end + readwrite_loop(ctx, ssl) } EnvUtil.suppress_warning do # read/write on not started session @@ -763,7 +758,6 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase cmp.force_encoding(Encoding::UTF_8) assert_equal(str, cmp) assert_equal(num_written, raw_size) - ssl.close } start_server(server_proc: server_proc) { |port| server_connect(port) { |ssl| diff --git a/test/utils.rb b/test/utils.rb index 2f2701af..8038db7c 100644 --- a/test/utils.rb +++ b/test/utils.rb @@ -176,10 +176,6 @@ class OpenSSL::SSLTestCase < OpenSSL::TestCase while line = ssl.gets ssl.write(line) end - rescue OpenSSL::SSL::SSLError - rescue IOError - ensure - ssl.close rescue nil end def server_loop(ctx, ssls, stop_pipe_r, ignore_listener_error, server_proc, threads) @@ -191,7 +187,8 @@ class OpenSSL::SSLTestCase < OpenSSL::TestCase return end ssl = ssls.accept - rescue OpenSSL::SSL::SSLError, Errno::ECONNRESET + rescue OpenSSL::SSL::SSLError, IOError, Errno::EBADF, Errno::EINVAL, + Errno::ECONNABORTED, Errno::ENOTSOCK, Errno::ECONNRESET if ignore_listener_error retry else @@ -200,14 +197,14 @@ class OpenSSL::SSLTestCase < OpenSSL::TestCase end th = Thread.start do - server_proc.call(ctx, ssl) + begin + server_proc.call(ctx, ssl) + ensure + ssl.close + end end threads << th end - rescue Errno::EBADF, IOError, Errno::EINVAL, Errno::ECONNABORTED, Errno::ENOTSOCK, Errno::ECONNRESET - if !ignore_listener_error - raise - end end def start_server(verify_mode: OpenSSL::SSL::VERIFY_NONE, start_immediately: true, -- cgit v1.2.3