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

ruby-changes:2816

From: ko1@a...
Date: 18 Dec 2007 23:50:04 +0900
Subject: [ruby-changes:2816] gotoyuzo - Ruby:r14306 (trunk): * lib/webrick/server.rb (WEBrick::GenericServer#accept_client):

gotoyuzo	2007-12-18 23:43:03 +0900 (Tue, 18 Dec 2007)

  New Revision: 14306

  Modified files:
    trunk/ChangeLog
    trunk/lib/webrick/config.rb
    trunk/lib/webrick/server.rb

  Log:
    * lib/webrick/server.rb (WEBrick::GenericServer#accept_client): 
      should rescue Errno::EINVAL from TCPServer#accept. this exception
      might occur if the server socket is not in ready to listen.
    
    * lib/webrick/server.rb (WEBrick::GenericServer#accept_client):
      don't call TCPServer#close if the :ShutdownSocketWithoutClose is set.
    
    * lib/webrick/config.rb (WEBrick::Config::General): add new parameter
      :ShutdownSocketWithoutClose.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14306&r2=14305
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/webrick/config.rb?r1=14306&r2=14305
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/webrick/server.rb?r1=14306&r2=14305

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 14305)
+++ ChangeLog	(revision 14306)
@@ -1,3 +1,15 @@
+Tue Dec 18 23:27:51 2007  GOTOU Yuuzou  <gotoyuzo@n...>
+
+	* lib/webrick/server.rb (WEBrick::GenericServer#accept_client): 
+	  should rescue Errno::EINVAL from TCPServer#accept. this exception
+	  might occur if the server socket is not in ready to listen.
+
+	* lib/webrick/server.rb (WEBrick::GenericServer#accept_client):
+	  don't call TCPServer#close if the :ShutdownSocketWithoutClose is set.
+
+	* lib/webrick/config.rb (WEBrick::Config::General): add new parameter
+	  :ShutdownSocketWithoutClose.
+
 Tue Dec 18 22:51:47 2007  GOTOU Yuuzou  <gotoyuzo@n...>
 
 	* ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLServer#shutdown): 
Index: lib/webrick/config.rb
===================================================================
--- lib/webrick/config.rb	(revision 14305)
+++ lib/webrick/config.rb	(revision 14306)
@@ -34,6 +34,7 @@
       :StopCallback   => nil,
       :AcceptCallback => nil,
       :DoNotReverseLookup => nil,
+      :ShutdownSocketWithoutClose => false,
     }
 
     # for HTTPServer, HTTPRequest, HTTPResponse ...
Index: lib/webrick/server.rb
===================================================================
--- lib/webrick/server.rb	(revision 14305)
+++ lib/webrick/server.rb	(revision 14306)
@@ -129,7 +129,10 @@
           addr = s.addr
           @logger.debug("close TCPSocket(#{addr[2]}, #{addr[1]})")
         end
-        s.close
+        s.shutdown
+        unless @config[:ShutdownSocketWithoutClose]
+          s.close
+        end
       }
       @listeners.clear
     end
@@ -147,9 +150,8 @@
         sock.sync = true
         Utils::set_non_blocking(sock) 
         Utils::set_close_on_exec(sock)
-      rescue Errno::ECONNRESET, Errno::ECONNABORTED, Errno::EPROTO => ex
-        # TCP connection was established but RST segment was sent
-        # from peer before calling TCPServer#accept.
+      rescue Errno::ECONNRESET, Errno::ECONNABORTED,
+             Errno::EPROTO, Errno::EINVAL => ex
       rescue Exception => ex
         msg = "#{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}"
         @logger.error msg

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

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