diff options
| author | gotoyuzo <gotoyuzo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-03-07 16:06:43 +0000 |
|---|---|---|
| committer | gotoyuzo <gotoyuzo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-03-07 16:06:43 +0000 |
| commit | 21eeaefd17684d2cd851c373507b6a5f7d95ba08 (patch) | |
| tree | e7e9e1ff2563012300e497e6328038f40ccdf65f /lib/webrick/httpserver.rb | |
| parent | 4b7f4929ada11902199c70019e5186573eb03683 (diff) | |
| download | ruby-21eeaefd17684d2cd851c373507b6a5f7d95ba08.tar.gz ruby-21eeaefd17684d2cd851c373507b6a5f7d95ba08.tar.xz ruby-21eeaefd17684d2cd851c373507b6a5f7d95ba08.zip | |
* 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: http://svn.ruby-lang.org/repos/ruby/trunk@5917 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/webrick/httpserver.rb')
| -rw-r--r-- | lib/webrick/httpserver.rb | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/lib/webrick/httpserver.rb b/lib/webrick/httpserver.rb index 7851ebe20..849706eb4 100644 --- a/lib/webrick/httpserver.rb +++ b/lib/webrick/httpserver.rb @@ -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 |
