diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | lib/xmlrpc/client.rb | 24 | ||||
-rw-r--r-- | test/xmlrpc/test_client.rb | 9 | ||||
-rw-r--r-- | version.h | 2 |
4 files changed, 34 insertions, 8 deletions
@@ -1,3 +1,10 @@ +Thu Feb 25 19:28:19 2016 Kouhei Sutou <kou@cozmixng.org> + + * lib/xmlrpc/client.rb: Support SSL options in async methods of + XMLRPC::Client. + [Bug #11489] + Reported by Aleksandar Kostadinov. Thanks!!! + Thu Feb 25 19:25:25 2016 NARUSE, Yui <naruse@ruby-lang.org> * marshal.c (r_object0): honor Marshal.load post proc diff --git a/lib/xmlrpc/client.rb b/lib/xmlrpc/client.rb index 95b1ea2d17..5da5c58f5f 100644 --- a/lib/xmlrpc/client.rb +++ b/lib/xmlrpc/client.rb @@ -432,6 +432,24 @@ module XMLRPC # :nodoc: Net::HTTP.new host, port, proxy_host, proxy_port end + def dup_net_http + http = net_http(@http.address, + @http.port, + @http.proxy_address, + @http.proxy_port) + http.proxy_user = @http.proxy_user + http.proxy_pass = @http.proxy_pass + if @http.use_ssl? + http.use_ssl = true + Net::HTTP::SSL_ATTRIBUTES.each do |attribute| + http.__send__("#{attribute}=", @http.__send__(attribute)) + end + end + http.read_timeout = @http.read_timeout + http.open_timeout = @http.open_timeout + http + end + def set_auth if @user.nil? @auth = nil @@ -463,10 +481,7 @@ module XMLRPC # :nodoc: if async # use a new HTTP object for each call - http = net_http(@host, @port, @proxy_host, @proxy_port) - http.use_ssl = @use_ssl if @use_ssl - http.read_timeout = @timeout - http.open_timeout = @timeout + http = dup_net_http # post request http.start { @@ -611,4 +626,3 @@ module XMLRPC # :nodoc: end # class Client end # module XMLRPC - diff --git a/test/xmlrpc/test_client.rb b/test/xmlrpc/test_client.rb index 2ecbe187bc..ac13c17110 100644 --- a/test/xmlrpc/test_client.rb +++ b/test/xmlrpc/test_client.rb @@ -9,10 +9,15 @@ end module XMLRPC class ClientTest < MiniTest::Unit::TestCase module Fake - class HTTP - attr_accessor :read_timeout, :open_timeout, :use_ssl + class HTTP < Net::HTTP + class << self + def new(*args, &block) + Class.method(:new).unbind.bind(self).call(*args, &block) + end + end def initialize responses = {} + super("127.0.0.1") @started = false @responses = responses end @@ -1,6 +1,6 @@ #define RUBY_VERSION "2.1.9" #define RUBY_RELEASE_DATE "2016-02-25" -#define RUBY_PATCHLEVEL 453 +#define RUBY_PATCHLEVEL 454 #define RUBY_RELEASE_YEAR 2016 #define RUBY_RELEASE_MONTH 2 |