aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgotoyuzo <gotoyuzo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-03-21 13:17:24 +0000
committergotoyuzo <gotoyuzo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-03-21 13:17:24 +0000
commit48dde6f3e6b3faf336a8734a21a7124115ed500f (patch)
tree6c399a248b922ea4e7be02eb8c6e5d2d9b17a7a3
parent06d1cbb92691638db23984b32a8011c6dd602fdb (diff)
downloadruby-48dde6f3e6b3faf336a8734a21a7124115ed500f.tar.gz
* lib/webrick/httpserver.rb (WEBrick::HTTPServer#virtual_host):
sort @virtual_hosts in address, port, host order. * lib/webrick/httpserver.rb (WEBrick::HTTPServer#lookup_server): hostname should not be match if :ServerAlias is not given. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5996 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rw-r--r--lib/webrick/httpserver.rb11
2 files changed, 17 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 0d8b18376a..bcb3f19921 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Sun Mar 21 22:17:35 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#virtual_host):
+ sort @virtual_hosts in address, port, host order.
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#lookup_server):
+ hostname should not be match if :ServerAlias is not given.
+
Sun Mar 21 21:11:16 2004 Keiju Ishitsuka <keiju@ishitsuka.com>
* lib/shell/*: bug fix for Shell#system(command_line_string).
diff --git a/lib/webrick/httpserver.rb b/lib/webrick/httpserver.rb
index 849706eb46..13574e7de0 100644
--- a/lib/webrick/httpserver.rb
+++ b/lib/webrick/httpserver.rb
@@ -132,14 +132,21 @@ module WEBrick
def virtual_host(server)
@virtual_hosts << server
+ @virtual_hosts = @virtual_hosts.sort_by{|s|
+ num = 0
+ num -= 4 if s[:BindAddress]
+ num -= 2 if s[:Port]
+ num -= 1 if s[:ServerName]
+ num
+ }
end
def lookup_server(req)
@virtual_hosts.find{|s|
- (s[:Port].nil? || req.port == s[:Port]) &&
(s[:BindAddress].nil? || req.addr[3] == s[:BindAddress]) &&
+ (s[:Port].nil? || req.port == s[:Port]) &&
((s[:ServerName].nil? || req.host == s[:ServerName]) ||
- (s[:ServerAlias].nil? || s[:ServerAlias].find{|h| h === req.host}))
+ (!s[:ServerAlias].nil? && s[:ServerAlias].find{|h| h === req.host}))
}
end