diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2017-02-05 00:03:39 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2017-02-05 00:26:33 +0900 |
commit | 7ebcd1d392e5c06e45cb063ff1d5a2fa21265b2f (patch) | |
tree | df8daa312fb6c91d76560cb86d94171b7fc934d9 | |
parent | 732318548f7c0e58f48c1baed3ed63b49a23e121 (diff) | |
download | ruby-openssl-7ebcd1d392e5c06e45cb063ff1d5a2fa21265b2f.tar.gz |
test/utils: let server_loop close socket
For code reduction. Currently server_proc has to do it - an open SSL
socket is given and it must close before returning.
-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 8bf0c214..23c9ef54 100644 --- a/test/test_ssl.rb +++ b/test/test_ssl.rb @@ -204,21 +204,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 @@ -783,7 +778,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) { |server, port| server_connect(port) { |ssl| diff --git a/test/utils.rb b/test/utils.rb index 54f75f25..28922de0 100644 --- a/test/utils.rb +++ b/test/utils.rb @@ -174,10 +174,6 @@ module OpenSSL::TestUtils 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) @@ -189,7 +185,8 @@ module OpenSSL::TestUtils 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 @@ -198,14 +195,14 @@ module OpenSSL::TestUtils 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, |