summaryrefslogtreecommitdiffstats
path: root/lib/webrick/httpserver.rb
diff options
context:
space:
mode:
authorgotoyuzo <gotoyuzo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-03-07 16:06:43 +0000
committergotoyuzo <gotoyuzo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-03-07 16:06:43 +0000
commit21eeaefd17684d2cd851c373507b6a5f7d95ba08 (patch)
treee7e9e1ff2563012300e497e6328038f40ccdf65f /lib/webrick/httpserver.rb
parent4b7f4929ada11902199c70019e5186573eb03683 (diff)
downloadruby-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.rb18
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