From f3501cd8aee61d962f8ca2ba800602cd0376038c Mon Sep 17 00:00:00 2001 From: gotoyuzo Date: Thu, 21 Oct 2004 10:10:52 +0000 Subject: * lib/webrick/httpresponse.rb (WEBrick::HTTPResponse#send_body_io): ensure to close @body. (http://bugs.debian.org/277520) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@7094 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ lib/webrick/httpresponse.rb | 35 +++++++++++++++++++---------------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index c33628ee29..0b07a00adf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Oct 21 19:06:15 2004 GOTOU Yuuzou + + * lib/webrick/httpresponse.rb (WEBrick::HTTPResponse#send_body_io): + ensure to close @body. (http://bugs.debian.org/277520) + Wed Oct 20 19:45:13 2004 Yukihiro Matsumoto * string.c (str_gsub): reentrant check. [ruby-dev:24432] diff --git a/lib/webrick/httpresponse.rb b/lib/webrick/httpresponse.rb index 717329fef3..d0f232d1e1 100644 --- a/lib/webrick/httpresponse.rb +++ b/lib/webrick/httpresponse.rb @@ -254,24 +254,27 @@ module WEBrick private def send_body_io(socket) - if @request_method == "HEAD" - # do nothing - elsif chunked? - while buf = @body.read(BUFSIZE) - next if buf.empty? - data = "" - data << format("%x", buf.size) << CRLF - data << buf << CRLF - _write_data(socket, data) - @sent_size += buf.size + begin + if @request_method == "HEAD" + # do nothing + elsif chunked? + while buf = @body.read(BUFSIZE) + next if buf.empty? + data = "" + data << format("%x", buf.size) << CRLF + data << buf << CRLF + _write_data(socket, data) + @sent_size += buf.size + end + _write_data(socket, "0#{CRLF}#{CRLF}") + else + size = @header['content-length'].to_i + _send_file(socket, @body, 0, size) + @sent_size = size end - _write_data(socket, "0#{CRLF}#{CRLF}") - else - size = @header['content-length'].to_i - _send_file(socket, @body, 0, size) - @sent_size = size + ensure + @body.close end - @body.close end def send_body_string(socket) -- cgit v1.2.3