diff --git a/lib/openssl/buffering.rb b/lib/openssl/buffering.rb index 8b5dd9da5..935f61f0e 100644 --- a/lib/openssl/buffering.rb +++ b/lib/openssl/buffering.rb @@ -339,9 +339,11 @@ def do_write(s) # Writes _s_ to the stream. If the argument is not a String it will be # converted using +.to_s+ method. Returns the number of bytes written. - def write(s) - do_write(s) - s.bytesize + def write(*s) + s.inject(0) do |written, str| + do_write(str) + written + str.bytesize + end end ## diff --git a/test/test_pair.rb b/test/test_pair.rb index 55b62321b..29d5c9bbb 100644 --- a/test/test_pair.rb +++ b/test/test_pair.rb @@ -362,6 +362,15 @@ def test_write_zero } end + def test_write_multiple_arguments + ssl_pair {|s1, s2| + str1 = "foo"; str2 = "bar" + assert_equal 6, s1.write(str1, str2) + s1.close + assert_equal "foobar", s2.read + } + end + def test_partial_tls_record_read_nonblock ssl_pair { |s1, s2| # the beginning of a TLS record