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

ruby-changes:16007

From: shyouhei <ko1@a...>
Date: Sat, 22 May 2010 19:51:13 +0900 (JST)
Subject: [ruby-changes:16007] Ruby:r27955 (ruby_1_8_7): merge revision(s) 26553:

shyouhei	2010-05-22 19:50:54 +0900 (Sat, 22 May 2010)

  New Revision: 27955

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

  Log:
    merge revision(s) 26553:
    * lib/net/http.rb (Net::HTTP#request): close @socket only after
      started.  [ruby-core:28028]

  Added files:
    branches/ruby_1_8_7/test/net/http/test_connection.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 27954)
+++ ruby_1_8_7/ChangeLog	(revision 27955)
@@ -1,3 +1,8 @@
+Sat May 22 19:46:27 2010  Nobuyoshi Nakada  <nobu@r...>
+
+	* lib/net/http.rb (Net::HTTP#request): close @socket only after
+	  started.  [ruby-core:28028]
+
 Sat May 22 19:36:38 2010  Nobuyoshi Nakada  <nobu@r...>
 
 	* eval.c (proc_invoke): reverted r25975.  [ruby-dev:39931]
Index: ruby_1_8_7/version.h
===================================================================
--- ruby_1_8_7/version.h	(revision 27954)
+++ ruby_1_8_7/version.h	(revision 27955)
@@ -2,7 +2,7 @@
 #define RUBY_RELEASE_DATE "2010-05-22"
 #define RUBY_VERSION_CODE 187
 #define RUBY_RELEASE_CODE 20100522
-#define RUBY_PATCHLEVEL 260
+#define RUBY_PATCHLEVEL 261
 
 #define RUBY_VERSION_MAJOR 1
 #define RUBY_VERSION_MINOR 8
Index: ruby_1_8_7/lib/net/http.rb
===================================================================
--- ruby_1_8_7/lib/net/http.rb	(revision 27954)
+++ ruby_1_8_7/lib/net/http.rb	(revision 27955)
@@ -1044,7 +1044,8 @@
       end
 
       req.set_body_internal body
-      begin_transport req
+      begin
+        begin_transport req
         req.exec @socket, @curr_http_version, edit_path(req.path)
         begin
           res = HTTPResponse.read_new(@socket)
@@ -1052,13 +1053,14 @@
         res.reading_body(@socket, req.response_body_permitted?) {
           yield res if block_given?
         }
-      end_transport req, res
+        end_transport req, res
+      rescue => exception
+        D "Conn close because of error #{exception}"
+        @socket.close unless @socket.closed?
+        raise exception
+      end
 
       res
-    rescue => exception
-      D "Conn close because of error #{exception}"
-      @socket.close unless @socket.closed?
-      raise exception
     end
 
     private
Index: ruby_1_8_7/test/net/http/test_connection.rb
===================================================================
--- ruby_1_8_7/test/net/http/test_connection.rb	(revision 0)
+++ ruby_1_8_7/test/net/http/test_connection.rb	(revision 27955)
@@ -0,0 +1,33 @@
+require 'net/http'
+require 'test/unit'
+
+module TestHTTP
+  class HTTPConnectionTest < Test::Unit::TestCase
+    def test_connection_refused_in_request
+      bug2708 = '[ruby-core:28028]'
+      port = nil
+      localhost = "127.0.0.1"
+      t = Thread.new {
+        TCPServer.open(localhost, 0) do |serv|
+          _, port, _, _ = serv.addr
+          if clt = serv.accept
+            clt.close
+          end
+        end
+      }
+      begin
+        sleep 0.1 until port
+        assert_raise(Errno::ECONNRESET, bug2708) {
+          n = Net::HTTP.new(localhost, port)
+          n.request_get('/')
+        }
+      ensure
+        t.join if t
+      end
+      assert_raise(Errno::ECONNREFUSED, bug2708) {
+        n = Net::HTTP.new(localhost, port)
+        n.request_get('/')
+      }
+    end
+  end
+end

Property changes on: ruby_1_8_7/test/net/http/test_connection.rb
___________________________________________________________________
Name: svn:eol-style
   + LF


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

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