aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2017-02-05 00:03:39 +0900
committerKazuki Yamaguchi <k@rhe.jp>2017-02-05 00:26:33 +0900
commit7ebcd1d392e5c06e45cb063ff1d5a2fa21265b2f (patch)
treedf8daa312fb6c91d76560cb86d94171b7fc934d9
parent732318548f7c0e58f48c1baed3ed63b49a23e121 (diff)
downloadruby-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.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 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,