[ruby/net-http] Feature detect to make net/http usable with JRuby
Handle missing session_new_cb= and do not call session_cache_mode=, as JRuby SSL does not support these methods. https://github.com/ruby/net-http/commit/3237ef4d8c
This commit is contained in:
parent
fa2df520bc
commit
cf73cf5981
@ -1051,10 +1051,14 @@ module Net #:nodoc:
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ssl_context.set_params(ssl_parameters)
|
@ssl_context.set_params(ssl_parameters)
|
||||||
@ssl_context.session_cache_mode =
|
unless @ssl_context.session_cache_mode.nil? # a dummy method on JRuby
|
||||||
OpenSSL::SSL::SSLContext::SESSION_CACHE_CLIENT |
|
@ssl_context.session_cache_mode =
|
||||||
OpenSSL::SSL::SSLContext::SESSION_CACHE_NO_INTERNAL_STORE
|
OpenSSL::SSL::SSLContext::SESSION_CACHE_CLIENT |
|
||||||
@ssl_context.session_new_cb = proc {|sock, sess| @ssl_session = sess }
|
OpenSSL::SSL::SSLContext::SESSION_CACHE_NO_INTERNAL_STORE
|
||||||
|
end
|
||||||
|
if @ssl_context.respond_to?(:session_new_cb) # not implemented under JRuby
|
||||||
|
@ssl_context.session_new_cb = proc {|sock, sess| @ssl_session = sess }
|
||||||
|
end
|
||||||
|
|
||||||
# Still do the post_connection_check below even if connecting
|
# Still do the post_connection_check below even if connecting
|
||||||
# to IP address
|
# to IP address
|
||||||
|
@ -152,12 +152,14 @@ class TestNetHTTPS < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
http.start
|
http.start
|
||||||
assert_equal false, http.instance_variable_get(:@socket).io.session_reused?
|
session_reused = http.instance_variable_get(:@socket).io.session_reused?
|
||||||
|
assert_false session_reused unless session_reused.nil? # can not detect re-use under JRuby
|
||||||
http.get("/")
|
http.get("/")
|
||||||
http.finish
|
http.finish
|
||||||
|
|
||||||
http.start
|
http.start
|
||||||
assert_equal true, http.instance_variable_get(:@socket).io.session_reused?
|
session_reused = http.instance_variable_get(:@socket).io.session_reused?
|
||||||
|
assert_true session_reused unless session_reused.nil? # can not detect re-use under JRuby
|
||||||
assert_equal $test_net_http_data, http.get("/").body
|
assert_equal $test_net_http_data, http.get("/").body
|
||||||
http.finish
|
http.finish
|
||||||
end
|
end
|
||||||
@ -301,7 +303,7 @@ class TestNetHTTPS < Test::Unit::TestCase
|
|||||||
ex = assert_raise(OpenSSL::SSL::SSLError){
|
ex = assert_raise(OpenSSL::SSL::SSLError){
|
||||||
http.request_get("/") {|res| }
|
http.request_get("/") {|res| }
|
||||||
}
|
}
|
||||||
re_msg = /\ASSL_connect returned=1 errno=0 |SSL_CTX_set_max_proto_version/
|
re_msg = /\ASSL_connect returned=1 errno=0 |SSL_CTX_set_max_proto_version|No appropriate protocol/
|
||||||
assert_match(re_msg, ex.message)
|
assert_match(re_msg, ex.message)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user