diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | ext/openssl/lib/openssl/buffering.rb | 5 | ||||
-rw-r--r-- | test/openssl/test_ssl.rb | 5 |
3 files changed, 14 insertions, 1 deletions
@@ -1,3 +1,8 @@ +Mon Dec 17 16:04:16 2007 GOTOU Yuuzou <gotoyuzo@notwork.org> + + * ext/openssl/lib/openssl/buffering.rb (Buffering#gets): added second + optional argument to specify maximum length limit. + Mon Dec 17 16:02:30 2007 GOTOU Yuuzou <gotoyuzo@notwork.org> * lib/webrick/httprequest.rb, lib/webrick/cgi.rb: Request-Line or diff --git a/ext/openssl/lib/openssl/buffering.rb b/ext/openssl/lib/openssl/buffering.rb index 8800aa53c..5dabcd513 100644 --- a/ext/openssl/lib/openssl/buffering.rb +++ b/ext/openssl/lib/openssl/buffering.rb @@ -99,7 +99,7 @@ module Buffering ret end - def gets(eol=$/) + def gets(eol=$/, limit=nil) idx = @rbuffer.index(eol) until @eof break if idx @@ -111,6 +111,9 @@ module Buffering else size = idx ? idx+eol.size : nil end + if limit and limit >= 0 + size = [size, limit].min + end consume_rbuff(size) end diff --git a/test/openssl/test_ssl.rb b/test/openssl/test_ssl.rb index b99b4a30b..5aee96e4f 100644 --- a/test/openssl/test_ssl.rb +++ b/test/openssl/test_ssl.rb @@ -136,6 +136,11 @@ class OpenSSL::TestSSL < Test::Unit::TestCase str = "x" * 100 + "\n" ssl.puts(str) assert_equal(str, ssl.gets) + + str = "x" * 100 + ssl.puts(str) + assert_equal(str, ssl.gets("\n", 100)) + assert_equal("\n", ssl.gets) } # read and write |