mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/net/http.rb (HTTPGenericRequest#send_request_with_body_stream):
increased encoding chunk size for POST request with body_stream (1K -> 16K). patched by Brian Candler. #1284. * test/net/http/test_post_io.rb: added for the patch. It's good if a patch comes with a test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@26131 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
639623ad48
commit
471ad3039c
3 changed files with 45 additions and 2 deletions
|
@ -1,3 +1,12 @@
|
|||
Sun Dec 20 23:43:46 2009 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
|
||||
|
||||
* lib/net/http.rb (HTTPGenericRequest#send_request_with_body_stream):
|
||||
increased encoding chunk size for POST request with body_stream
|
||||
(1K -> 16K). patched by Brian Candler. #1284.
|
||||
|
||||
* test/net/http/test_post_io.rb: added for the patch. It's good if a
|
||||
patch comes with a test.
|
||||
|
||||
Sat Dec 19 09:31:25 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
|
||||
|
||||
* lib/set.rb (initialize): Add check that argument is enumerable
|
||||
|
|
|
@ -1467,6 +1467,8 @@ module Net #:nodoc:
|
|||
|
||||
include HTTPHeader
|
||||
|
||||
BUFSIZE = 16*1024
|
||||
|
||||
def initialize(m, reqbody, resbody, path, initheader = nil)
|
||||
@method = m
|
||||
@request_has_body = reqbody
|
||||
|
@ -1552,12 +1554,12 @@ module Net #:nodoc:
|
|||
supply_default_content_type
|
||||
write_header sock, ver, path
|
||||
if chunked?
|
||||
while s = f.read(1024)
|
||||
while s = f.read(BUFSIZE)
|
||||
sock.write(sprintf("%x\r\n", s.length) << s << "\r\n")
|
||||
end
|
||||
sock.write "0\r\n\r\n"
|
||||
else
|
||||
while s = f.read(1024)
|
||||
while s = f.read(BUFSIZE)
|
||||
sock.write s
|
||||
end
|
||||
end
|
||||
|
|
32
test/net/http/test_post_io.rb
Normal file
32
test/net/http/test_post_io.rb
Normal file
|
@ -0,0 +1,32 @@
|
|||
require 'test/unit'
|
||||
require 'net/http'
|
||||
require 'stringio'
|
||||
|
||||
class HTTPPostIOTest < Test::Unit::TestCase
|
||||
def test_post_io_chunk_size
|
||||
t = nil
|
||||
TCPServer.open("127.0.0.1", 0) {|serv|
|
||||
_, port, _, _ = serv.addr
|
||||
t = Thread.new {
|
||||
begin
|
||||
req = Net::HTTP::Post.new("/test.cgi")
|
||||
req['Transfer-Encoding'] = 'chunked'
|
||||
req.body_stream = StringIO.new("\0" * (16 * 1024 + 1))
|
||||
http = Net::HTTP.new("127.0.0.1", port)
|
||||
res = http.start { |http| http.request(req) }
|
||||
rescue EOFError, Errno::EPIPE
|
||||
end
|
||||
}
|
||||
sock = serv.accept
|
||||
begin
|
||||
assert_match(/chunked/, sock.gets("\r\n\r\n"))
|
||||
chunk_header = sock.gets.chomp
|
||||
assert_equal(16 * 1024, chunk_header.to_i(16))
|
||||
ensure
|
||||
sock.close
|
||||
end
|
||||
}
|
||||
ensure
|
||||
t.join if t
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue