summaryrefslogtreecommitdiff
path: root/lib/net/http.rb
diff options
context:
space:
mode:
authorKarol Bucek <kares@users.noreply.github.com>2022-04-20 06:01:02 +0200
committergit <svn-admin@ruby-lang.org>2022-04-20 13:01:08 +0900
commitcf73cf5981802f2bcc30aba07914acf4286cda5a (patch)
tree9094cfece3e22e71a1339c6692529b990f3d845f /lib/net/http.rb
parentfa2df520bcaaf3957db0489f1237311f091ac08d (diff)
[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
Diffstat (limited to 'lib/net/http.rb')
-rw-r--r--lib/net/http.rb12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/net/http.rb b/lib/net/http.rb
index dc8ed051f0..dd64a2d11e 100644
--- a/lib/net/http.rb
+++ b/lib/net/http.rb
@@ -1051,10 +1051,14 @@ module Net #:nodoc:
end
end
@ssl_context.set_params(ssl_parameters)
- @ssl_context.session_cache_mode =
- OpenSSL::SSL::SSLContext::SESSION_CACHE_CLIENT |
- OpenSSL::SSL::SSLContext::SESSION_CACHE_NO_INTERNAL_STORE
- @ssl_context.session_new_cb = proc {|sock, sess| @ssl_session = sess }
+ unless @ssl_context.session_cache_mode.nil? # a dummy method on JRuby
+ @ssl_context.session_cache_mode =
+ OpenSSL::SSL::SSLContext::SESSION_CACHE_CLIENT |
+ 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
# to IP address