diff options
author | Gioele Barabucci <gioele@svario.it> | 2016-04-05 11:04:29 +0200 |
---|---|---|
committer | Gioele Barabucci <gioele@svario.it> | 2016-04-05 11:09:24 +0200 |
commit | 1162736d558a5545ff7ac2269494180145cd79f9 (patch) | |
tree | 7ce328414f91c4f0d8a551d1449c2a02e4badf7f | |
parent | deec4854c0ca8efcfc6fddfd11df1dfb93bb1b82 (diff) | |
download | rack-1162736d558a5545ff7ac2269494180145cd79f9.tar.gz |
Compare host and server name only once per call
The host name and the server name are not changed inside `#call(env)`, so there is no need to compare them every time a mapping is tested.
-rw-r--r-- | lib/rack/urlmap.rb | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/rack/urlmap.rb b/lib/rack/urlmap.rb index 572b2151..510b4b50 100644 --- a/lib/rack/urlmap.rb +++ b/lib/rack/urlmap.rb @@ -47,11 +47,13 @@ module Rack server_name = env[SERVER_NAME] server_port = env[SERVER_PORT] + is_same_server = casecmp?(http_host, server_name) || + casecmp?(http_host, "#{server_name}:#{server_port}") + @mapping.each do |host, location, match, app| unless casecmp?(http_host, host) \ || casecmp?(server_name, host) \ - || (!host && (casecmp?(http_host, server_name) || - casecmp?(http_host, "#{server_name}:#{server_port}"))) + || (!host && is_same_server) next end |