1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/webrick/config.rb (WEBrick::Config::HTTP): rename :RequestHander

to :RequestCallback and add new option :ServerAlias.

* lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): use
  :RequestCallback and warn if :RequestHandler is in server's option.

* lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): should print
  error message for WEBrick::HTTPSataus::Error.

* lib/webrick/httpserver.rb (WEBrick::HTTPServer#lookup_server):
  lookup for hostname from :ServerAlias if the req.host is not match
  to :ServerName.

* lib/webrick/httpservlet.rb (WEBrick::HTTPServlet::CGIHandler#do_GET):
  use $?.exitstatus and refine log message.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5917 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
gotoyuzo 2004-03-07 16:06:43 +00:00
parent 4774e8fda5
commit 9b11fc8032
4 changed files with 35 additions and 11 deletions

View file

@ -52,13 +52,18 @@ module WEBrick
res.request_http_version = req.http_version
res.keep_alive = req.keep_alive?
server = lookup_server(req) || self
if handler = server[:RequestHandler]
handler.call(req, res)
if callback = server[:RequestCallback]
callback.call(req, res)
elsif callback = server[:RequestHandler]
msg = ":RequestHandler is deprecated, please use :RequestCallback"
@logger.warn(msg)
callback.call(req, res)
end
server.service(req, res)
rescue HTTPStatus::EOFError, HTTPStatus::RequestTimeout => ex
res.set_error(ex)
rescue HTTPStatus::Error => ex
@logger.error(ex.message)
res.set_error(ex)
rescue HTTPStatus::Status => ex
res.status = ex.code
@ -130,10 +135,11 @@ module WEBrick
end
def lookup_server(req)
@virtual_hosts.find{|server|
(server[:Port].nil? || req.port == server[:Port]) &&
(server[:BindAddress].nil? || req.addr[3] == server[:BindAddress]) &&
(server[:ServerName].nil? || req.host == server[:ServerName])
@virtual_hosts.find{|s|
(s[:Port].nil? || req.port == s[:Port]) &&
(s[:BindAddress].nil? || req.addr[3] == s[:BindAddress]) &&
((s[:ServerName].nil? || req.host == s[:ServerName]) ||
(s[:ServerAlias].nil? || s[:ServerAlias].find{|h| h === req.host}))
}
end