ruby-changes:34532
From: nagachika <ko1@a...>
Date: Mon, 30 Jun 2014 02:27:02 +0900 (JST)
Subject: [ruby-changes:34532] nagachika:r46613 (ruby_2_1): merge revision(s) r45863, r45871: [Backport #9750]
nagachika 2014-06-30 02:26:54 +0900 (Mon, 30 Jun 2014) New Revision: 46613 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=46613 Log: merge revision(s) r45863,r45871: [Backport #9750] * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLServer#accept): Consider Socket#accept as well as TCPServer#accept. Reported by Sam Stelfox. [ruby-core:62064] [Bug #9750] Modified directories: branches/ruby_2_1/ Modified files: branches/ruby_2_1/ChangeLog branches/ruby_2_1/ext/openssl/lib/openssl/ssl.rb branches/ruby_2_1/test/openssl/test_pair.rb branches/ruby_2_1/version.h Index: ruby_2_1/ChangeLog =================================================================== --- ruby_2_1/ChangeLog (revision 46612) +++ ruby_2_1/ChangeLog (revision 46613) @@ -1,3 +1,9 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_1/ChangeLog#L1 +Mon Jun 30 02:25:00 2014 Tanaka Akira <akr@f...> + + * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLServer#accept): + Consider Socket#accept as well as TCPServer#accept. + Reported by Sam Stelfox. [ruby-core:62064] [Bug #9750] + Mon Jun 30 02:18:47 2014 Eric Wong <e@8...> * complex.c (parse_comp): replace ALLOCA_N with ALLOCV_N/ALLOCV_END Index: ruby_2_1/ext/openssl/lib/openssl/ssl.rb =================================================================== --- ruby_2_1/ext/openssl/lib/openssl/ssl.rb (revision 46612) +++ ruby_2_1/ext/openssl/lib/openssl/ssl.rb (revision 46613) @@ -187,7 +187,10 @@ module OpenSSL https://github.com/ruby/ruby/blob/trunk/ruby_2_1/ext/openssl/lib/openssl/ssl.rb#L187 # Works similar to TCPServer#accept. def accept - sock = @svr.accept + # Socket#accept returns [socket, addrinfo]. + # TCPServer#accept returns a socket. + # The following comma strips addrinfo. + sock, = @svr.accept begin ssl = OpenSSL::SSL::SSLSocket.new(sock, @ctx) ssl.sync_close = true Index: ruby_2_1/version.h =================================================================== --- ruby_2_1/version.h (revision 46612) +++ ruby_2_1/version.h (revision 46613) @@ -1,6 +1,6 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_1/version.h#L1 #define RUBY_VERSION "2.1.2" #define RUBY_RELEASE_DATE "2014-06-30" -#define RUBY_PATCHLEVEL 150 +#define RUBY_PATCHLEVEL 151 #define RUBY_RELEASE_YEAR 2014 #define RUBY_RELEASE_MONTH 6 Index: ruby_2_1/test/openssl/test_pair.rb =================================================================== --- ruby_2_1/test/openssl/test_pair.rb (revision 46612) +++ ruby_2_1/test/openssl/test_pair.rb (revision 46613) @@ -5,14 +5,14 @@ if defined?(OpenSSL) https://github.com/ruby/ruby/blob/trunk/ruby_2_1/test/openssl/test_pair.rb#L5 require 'socket' require_relative '../ruby/ut_eof' -module SSLPair +module OpenSSL::SSLPairM def server host = "127.0.0.1" port = 0 ctx = OpenSSL::SSL::SSLContext.new() ctx.ciphers = "ADH" ctx.tmp_dh_callback = proc { OpenSSL::TestUtils::TEST_KEY_DH1024 } - tcps = TCPServer.new(host, port) + tcps = create_tcp_server(host, port) ssls = OpenSSL::SSL::SSLServer.new(tcps, ctx) return ssls end @@ -21,7 +21,7 @@ module SSLPair https://github.com/ruby/ruby/blob/trunk/ruby_2_1/test/openssl/test_pair.rb#L21 host = "127.0.0.1" ctx = OpenSSL::SSL::SSLContext.new() ctx.ciphers = "ADH" - s = TCPSocket.new(host, port) + s = create_tcp_client(host, port) ssl = OpenSSL::SSL::SSLSocket.new(s, ctx) ssl.connect ssl.sync_close = true @@ -35,7 +35,7 @@ module SSLPair https://github.com/ruby/ruby/blob/trunk/ruby_2_1/test/openssl/test_pair.rb#L35 ssls.close ns } - port = ssls.to_io.addr[1] + port = ssls.to_io.local_address.ip_port c = client(port) s = th.value if block_given? @@ -56,10 +56,31 @@ module SSLPair https://github.com/ruby/ruby/blob/trunk/ruby_2_1/test/openssl/test_pair.rb#L56 end end -class OpenSSL::TestEOF1 < Test::Unit::TestCase - include TestEOF - include SSLPair +module OpenSSL::SSLPair + include OpenSSL::SSLPairM + + def create_tcp_server(host, port) + TCPServer.new(host, port) + end + + def create_tcp_client(host, port) + TCPSocket.new(host, port) + end +end + +module OpenSSL::SSLPairLowlevelSocket + include OpenSSL::SSLPairM + + def create_tcp_server(host, port) + Addrinfo.tcp(host, port).listen + end + def create_tcp_client(host, port) + Addrinfo.tcp(host, port).connect + end +end + +module OpenSSL::TestEOF1M def open_file(content) s1, s2 = ssl_pair Thread.new { s2 << content; s2.close } @@ -67,10 +88,7 @@ class OpenSSL::TestEOF1 < Test::Unit::Te https://github.com/ruby/ruby/blob/trunk/ruby_2_1/test/openssl/test_pair.rb#L88 end end -class OpenSSL::TestEOF2 < Test::Unit::TestCase - include TestEOF - include SSLPair - +module OpenSSL::TestEOF2M def open_file(content) s1, s2 = ssl_pair Thread.new { s1 << content; s1.close } @@ -78,9 +96,7 @@ class OpenSSL::TestEOF2 < Test::Unit::Te https://github.com/ruby/ruby/blob/trunk/ruby_2_1/test/openssl/test_pair.rb#L96 end end -class OpenSSL::TestPair < Test::Unit::TestCase - include SSLPair - +module OpenSSL::TestPairM def test_getc ssl_pair {|s1, s2| s1 << "a" @@ -302,7 +318,40 @@ class OpenSSL::TestPair < Test::Unit::Te https://github.com/ruby/ruby/blob/trunk/ruby_2_1/test/openssl/test_pair.rb#L318 sock1.close if sock1 && !sock1.closed? sock2.close if sock2 && !sock2.closed? end +end + +class OpenSSL::TestEOF1 < Test::Unit::TestCase + include TestEOF + include OpenSSL::SSLPair + include OpenSSL::TestEOF1M +end + +class OpenSSL::TestEOF1LowlevelSocket < Test::Unit::TestCase + include TestEOF + include OpenSSL::SSLPairLowlevelSocket + include OpenSSL::TestEOF1M +end + +class OpenSSL::TestEOF2 < Test::Unit::TestCase + include TestEOF + include OpenSSL::SSLPair + include OpenSSL::TestEOF2M +end + +class OpenSSL::TestEOF2LowlevelSocket < Test::Unit::TestCase + include TestEOF + include OpenSSL::SSLPairLowlevelSocket + include OpenSSL::TestEOF2M +end + +class OpenSSL::TestPair < Test::Unit::TestCase + include OpenSSL::SSLPair + include OpenSSL::TestPairM +end +class OpenSSL::TestPairLowlevelSocket < Test::Unit::TestCase + include OpenSSL::SSLPairLowlevelSocket + include OpenSSL::TestPairM end end Property changes on: ruby_2_1 ___________________________________________________________________ Modified: svn:mergeinfo Merged /trunk:r45863,45871 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/