summary refs log tree commit
diff options
context:
space:
mode:
authorGioele Barabucci <gioele@svario.it>2016-04-05 11:04:29 +0200
committerGioele Barabucci <gioele@svario.it>2016-04-05 11:09:24 +0200
commit1162736d558a5545ff7ac2269494180145cd79f9 (patch)
tree7ce328414f91c4f0d8a551d1449c2a02e4badf7f
parentdeec4854c0ca8efcfc6fddfd11df1dfb93bb1b82 (diff)
downloadrack-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.rb6
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