aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_pair.rb
diff options
context:
space:
mode:
authorZachary Scott <e@zzak.io>2015-06-03 15:23:23 -0400
committerZachary Scott <e@zzak.io>2015-06-03 15:23:23 -0400
commitc4cf30d1a6bcd67c3141a6e53da4239769945e65 (patch)
tree425cce85866198389539105a405a27d0442d660b /test/test_pair.rb
parent8706e768540ab7d556f1859f71d7ee3c8b40e25d (diff)
downloadruby-openssl-c4cf30d1a6bcd67c3141a6e53da4239769945e65.tar.gz
Upstream test from ruby/ruby@aaf2d07
Diffstat (limited to 'test/test_pair.rb')
-rw-r--r--test/test_pair.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/test/test_pair.rb b/test/test_pair.rb
index 9056911b..117e22e7 100644
--- a/test/test_pair.rb
+++ b/test/test_pair.rb
@@ -283,6 +283,33 @@ module OpenSSL::TestPairM
serv.close if serv && !serv.closed?
end
+ def test_accept_nonblock_no_exception
+ ctx2 = OpenSSL::SSL::SSLContext.new
+ ctx2.ciphers = "ADH"
+ ctx2.tmp_dh_callback = proc { OpenSSL::TestUtils::TEST_KEY_DH1024 }
+
+ sock1, sock2 = tcp_pair
+
+ s2 = OpenSSL::SSL::SSLSocket.new(sock2, ctx2)
+ accepted = s2.accept_nonblock(exception: false)
+ assert_equal :wait_readable, accepted
+
+ ctx1 = OpenSSL::SSL::SSLContext.new
+ ctx1.ciphers = "ADH"
+ s1 = OpenSSL::SSL::SSLSocket.new(sock1, ctx1)
+ th = Thread.new { s1.connect }
+ until th.join(0.01)
+ accepted = s2.accept_nonblock(exception: false)
+ assert_includes([s2, :wait_readable, :wait_writable ], accepted)
+ end
+ ensure
+ s1.close if s1
+ s2.close if s2
+ sock1.close if sock1
+ sock2.close if sock2
+ accepted.close if accepted.respond_to?(:close)
+ end
+
def test_connect_accept_nonblock
ctx = OpenSSL::SSL::SSLContext.new()
ctx.ciphers = "ADH"