summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2017-02-05 00:03:39 +0900
committerKazuki Yamaguchi <k@rhe.jp>2017-08-24 21:01:09 +0900
commit81f3efcbc5837af5e918ace44d8034e6c5ac0fb7 (patch)
tree4c6014c40ba3824da2776b7448aaf4efb9bba4e7
parenta0019110ddc97d3a46b99dc822b520f41afae687 (diff)
downloadruby-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.rb22
-rw-r--r--test/utils.rb17
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,