diff options
Diffstat (limited to 'test/openssl/utils.rb')
-rw-r--r-- | test/openssl/utils.rb | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/test/openssl/utils.rb b/test/openssl/utils.rb index e3240a0d1e..f878845354 100644 --- a/test/openssl/utils.rb +++ b/test/openssl/utils.rb @@ -299,28 +299,31 @@ AQjjxMXhwULlmuR/K+WwlaZPiLIBYalLAZQ7ZbOPeVkJ8ePao0eLAgEC ssls = OpenSSL::SSL::SSLServer.new(tcps, ctx) ssls.start_immediately = start_immediately - server = Thread.new do - server_loop(ctx, ssls, stop_pipe_r, ignore_ssl_accept_error, server_proc, threads) - end - threads.unshift server + begin + server = Thread.new do + server_loop(ctx, ssls, stop_pipe_r, ignore_ssl_accept_error, server_proc, threads) + end + threads.unshift server - $stderr.printf("%s started: pid=%d port=%d\n", SSL_SERVER, $$, port) if $DEBUG + $stderr.printf("%s started: pid=%d port=%d\n", SSL_SERVER, $$, port) if $DEBUG - th = Thread.new do + th = Thread.new do + begin + block.call(server, port.to_i) + ensure + stop_pipe_w.close + end + end begin - block.call(server, port.to_i) - ensure - stop_pipe_w.close + th.join + rescue Exception + threads.unshift th end - end - begin - th.join - rescue Exception - threads.unshift th + ensure + assert_join_threads(threads) end ensure tcps.close if tcps - assert_join_threads(threads) end } end |