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

ruby-changes:21974

From: tenderlove <ko1@a...>
Date: Tue, 13 Dec 2011 07:15:49 +0900 (JST)
Subject: [ruby-changes:21974] tenderlove:r34023 (trunk): * lib/webrick/httpresponse.rb (setup_header): 204 and 304 responses

tenderlove	2011-12-13 07:15:31 +0900 (Tue, 13 Dec 2011)

  New Revision: 34023

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

  Log:
    * lib/webrick/httpresponse.rb (setup_header): 204 and 304 responses
      are allowed to have a Keep-Alive connection. [ruby-core:41581]
    
    * test/webrick/test_httpresponse.rb: corresponding test.

  Added files:
    trunk/test/webrick/test_httpresponse.rb
  Modified files:
    trunk/ChangeLog
    trunk/lib/webrick/httpresponse.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 34022)
+++ ChangeLog	(revision 34023)
@@ -1,3 +1,10 @@
+Tue Dec 13 07:13:28 2011  Aaron Patterson <aaron@t...>
+
+	* lib/webrick/httpresponse.rb (setup_header): 204 and 304 responses
+	  are allowed to have a Keep-Alive connection. [ruby-core:41581]
+	
+	* test/webrick/test_httpresponse.rb: corresponding test.
+
 Tue Dec 13 06:29:39 2011  Nobuyoshi Nakada  <nobu@r...>
 
 	* parse.y (parser_magic_comment): should pass the proper value.
Index: lib/webrick/httpresponse.rb
===================================================================
--- lib/webrick/httpresponse.rb	(revision 34022)
+++ lib/webrick/httpresponse.rb	(revision 34023)
@@ -202,7 +202,7 @@
       if @header['connection'] == "close"
          @keep_alive = false
       elsif keep_alive?
-        if chunked? || @header['content-length']
+        if chunked? || @header['content-length'] || @status == 304 || @status == 204
           @header['connection'] = "Keep-Alive"
         else
           msg = "Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true"
Index: test/webrick/test_httpresponse.rb
===================================================================
--- test/webrick/test_httpresponse.rb	(revision 0)
+++ test/webrick/test_httpresponse.rb	(revision 34023)
@@ -0,0 +1,46 @@
+require "webrick"
+require "minitest/autorun"
+
+module WEBrick
+  class TestHTTPResponse < MiniTest::Unit::TestCase
+    class FakeLogger
+      attr_reader :messages
+
+      def initialize
+        @messages = []
+      end
+
+      def warn msg
+        @messages << msg
+      end
+    end
+
+    def test_304_does_not_log_warning
+      logger          = FakeLogger.new
+      config          = Config::HTTP
+      config[:Logger] = logger
+
+      res             = HTTPResponse.new config
+      res.status      = 304
+      res.keep_alive  = true
+
+      res.setup_header
+
+      assert_equal 0, logger.messages.length
+    end
+
+    def test_204_does_not_log_warning
+      logger          = FakeLogger.new
+      config          = Config::HTTP
+      config[:Logger] = logger
+
+      res             = HTTPResponse.new config
+      res.status      = 204
+      res.keep_alive  = true
+
+      res.setup_header
+
+      assert_equal 0, logger.messages.length
+    end
+  end
+end

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

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