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

ruby-changes:15287

From: shyouhei <ko1@a...>
Date: Fri, 2 Apr 2010 12:28:01 +0900 (JST)
Subject: [ruby-changes:15287] Ruby:r27172 (ruby_1_8_7): merge revision(s) 26131:

shyouhei	2010-04-02 12:27:45 +0900 (Fri, 02 Apr 2010)

  New Revision: 27172

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=27172

  Log:
    merge revision(s) 26131:
    * 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.

  Added files:
    branches/ruby_1_8_7/test/net/http/test_post_io.rb
  Modified files:
    branches/ruby_1_8_7/ChangeLog
    branches/ruby_1_8_7/lib/net/http.rb
    branches/ruby_1_8_7/version.h

Index: ruby_1_8_7/ChangeLog
===================================================================
--- ruby_1_8_7/ChangeLog	(revision 27171)
+++ ruby_1_8_7/ChangeLog	(revision 27172)
@@ -1,3 +1,12 @@
+Fri Apr  2 03:27:22 2010  NAKAMURA, Hiroshi  <nahi@r...>
+
+	* 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.
+
 Thu Apr  1 05:32:17 2010  NAKAMURA Usaku  <usa@r...>
 
 	* string.c (rb_str_inspect): wrong result of UTF-8 inspect because of
Index: ruby_1_8_7/version.h
===================================================================
--- ruby_1_8_7/version.h	(revision 27171)
+++ ruby_1_8_7/version.h	(revision 27172)
@@ -1,15 +1,15 @@
 #define RUBY_VERSION "1.8.7"
-#define RUBY_RELEASE_DATE "2010-04-01"
+#define RUBY_RELEASE_DATE "2010-04-02"
 #define RUBY_VERSION_CODE 187
-#define RUBY_RELEASE_CODE 20100401
-#define RUBY_PATCHLEVEL 250
+#define RUBY_RELEASE_CODE 20100402
+#define RUBY_PATCHLEVEL 251
 
 #define RUBY_VERSION_MAJOR 1
 #define RUBY_VERSION_MINOR 8
 #define RUBY_VERSION_TEENY 7
 #define RUBY_RELEASE_YEAR 2010
 #define RUBY_RELEASE_MONTH 4
-#define RUBY_RELEASE_DAY 1
+#define RUBY_RELEASE_DAY 2
 
 #ifdef RUBY_EXTERN
 RUBY_EXTERN const char ruby_version[];
@@ -26,4 +26,4 @@
 #define RUBY_BIRTH_DAY 24
 
 #define RUBY_RELEASE_STR "patchlevel"
-#define RUBY_RELEASE_NUM RUBY_PATCHLEVEL
+#define RUBY_RELEASE_NUM RUBY_PATCHLEVEL
\ No newline at end of file
Index: ruby_1_8_7/lib/net/http.rb
===================================================================
--- ruby_1_8_7/lib/net/http.rb	(revision 27171)
+++ ruby_1_8_7/lib/net/http.rb	(revision 27172)
@@ -1467,6 +1467,8 @@
 
     include HTTPHeader
 
+    BUFSIZE = 16*1024
+
     def initialize(m, reqbody, resbody, path, initheader = nil)
       @method = m
       @request_has_body = reqbody
@@ -1552,12 +1554,12 @@
       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
Index: ruby_1_8_7/test/net/http/test_post_io.rb
===================================================================
--- ruby_1_8_7/test/net/http/test_post_io.rb	(revision 0)
+++ ruby_1_8_7/test/net/http/test_post_io.rb	(revision 27172)
@@ -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

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

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