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