[前][次][番号順一覧][スレッド一覧]

ruby-changes:50776

From: normal <ko1@a...>
Date: Wed, 28 Mar 2018 17:30:38 +0900 (JST)
Subject: [ruby-changes:50776] normal:r62961 (trunk): webrick/httpservlet/cgihandler: reduce memory use

normal	2018-03-28 17:06:28 +0900 (Wed, 28 Mar 2018)

  New Revision: 62961

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=62961

  Log:
    webrick/httpservlet/cgihandler: reduce memory use
    
    WEBrick::HTTPRequest#body can be passed a block to process the
    body in chunks.  Use this feature to avoid building a giant
    string in memory.
    
    * lib/webrick/httpservlet/cgihandler.rb (do_GET):
      avoid reading entire request body into memory
      (do_POST is aliased to do_GET, so it handles bodies)

  Modified files:
    trunk/lib/webrick/httpservlet/cgihandler.rb
Index: lib/webrick/httpservlet/cgihandler.rb
===================================================================
--- lib/webrick/httpservlet/cgihandler.rb	(revision 62960)
+++ lib/webrick/httpservlet/cgihandler.rb	(revision 62961)
@@ -65,9 +65,7 @@ module WEBrick https://github.com/ruby/ruby/blob/trunk/lib/webrick/httpservlet/cgihandler.rb#L65
           cgi_in.write("%8d" % dump.bytesize)
           cgi_in.write(dump)
 
-          if req.body and req.body.bytesize > 0
-            cgi_in.write(req.body)
-          end
+          req.body { |chunk| cgi_in.write(chunk) }
         ensure
           cgi_in.close
           status = $?.exitstatus

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]