aboutsummaryrefslogtreecommitdiffstats
path: root/lib/webrick/server.rb
diff options
context:
space:
mode:
authorgotoyuzo <gotoyuzo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-18 14:43:03 +0000
committergotoyuzo <gotoyuzo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-18 14:43:03 +0000
commita04281ff0e3f1dc0f6584102b94f88403ff35520 (patch)
treede21f112d9f6f935a2f9a744b4ff453ad51c8cb2 /lib/webrick/server.rb
parentd99a343dfd9f8b060a51b29ce89137e31786222f (diff)
downloadruby-a04281ff0e3f1dc0f6584102b94f88403ff35520.tar.gz
* 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. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14306 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/webrick/server.rb')
-rw-r--r--lib/webrick/server.rb10
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/webrick/server.rb b/lib/webrick/server.rb
index 3adbded5fa..54375d2e7d 100644
--- a/lib/webrick/server.rb
+++ b/lib/webrick/server.rb
@@ -129,7 +129,10 @@ module WEBrick
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 @@ module WEBrick
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