diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2017-02-05 00:03:39 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2017-08-24 21:01:09 +0900 |
commit | 81f3efcbc5837af5e918ace44d8034e6c5ac0fb7 (patch) | |
tree | 4c6014c40ba3824da2776b7448aaf4efb9bba4e7 | |
parent | a0019110ddc97d3a46b99dc822b520f41afae687 (diff) | |
download | ruby-openssl-81f3efcbc5837af5e918ace44d8034e6c5ac0fb7.tar.gz |
test/utils: let server_loop close socket
Close the socket by server_loop rather than by server_proc. This reduces
code duplication.
-rw-r--r-- | test/test_ssl.rb | 22 | ||||
-rw-r--r-- | 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, |