From 56206ab8cd0e822e861ae963fc02e2343652d8e2 Mon Sep 17 00:00:00 2001 From: naruse Date: Sat, 7 Apr 2012 21:50:34 +0000 Subject: * lib/webrick/httpresponse.rb (WEBrick::HTTPResponse#send_body_io): use readpartial to get data even if the response is streaming data and each data is smaller than @buffer_size. patched by yu nobuoka. [ruby-dev:45471] [Bug #6230] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35253 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/webrick/httpresponse.rb | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'lib/webrick/httpresponse.rb') diff --git a/lib/webrick/httpresponse.rb b/lib/webrick/httpresponse.rb index baa49dea92..5adbc82173 100644 --- a/lib/webrick/httpresponse.rb +++ b/lib/webrick/httpresponse.rb @@ -330,13 +330,18 @@ module WEBrick if @request_method == "HEAD" # do nothing elsif chunked? - while buf = @body.read(@buffer_size) - next if buf.empty? - data = "" - data << format("%x", buf.bytesize) << CRLF - data << buf << CRLF - _write_data(socket, data) - @sent_size += buf.bytesize + begin + buf = '' + data = '' + while true + @body.readpartial( @buffer_size, buf ) # there is no need to clear buf? + data << format("%x", buf.bytesize) << CRLF + data << buf << CRLF + _write_data(socket, data) + data.clear + @sent_size += buf.bytesize + end + rescue EOFError # do nothing end _write_data(socket, "0#{CRLF}#{CRLF}") else -- cgit v1.2.3