Heyas, we spent our afternoon trying to figure out if this is a bug or a feature.
We have 2 routes:
"/" => app1,
"http://example.com/x" => app2,
When requesting curl http://example.com/x the route for app1 matches (instead of the expected app2).
I think specific-domain-routes should be matched BEFORE any-domain routes. This could be easily fixed by setting INFINITY weight to any-domain routes instead of NEGATIVE_INFINITY (see https://github.com/rack/rack/blob/master/lib/rack/urlmap.rb#L15 ).
The problem, is that when we did that, (this test fails)[https://github.com/rack/rack/blob/master/test/spec_urlmap.rb#L113]. I couldn't understand why that test expects a response from default.org when requesting a URL http://foo.org/
So, the big question is: is this a bug or a feature?
There's a gist here displaying the behavior https://gist.github.com/4668565
Thanks a lot!
Interesting, I see your issue, but it's not related to the priorities. Currently, we don't handle Hosts that aren't coming in from SERVER_NAME or HTTP_HOST headers. As a consequence of not having supported this previously (this may be related to the CGI spec, I need to do some research), Rack::MockRequest drops the host information during env creation.
Fail. There are a few odd paths, but essentially, you're absolutely correct. Patch applied. Thank you!
Fix a bug where host matching occurs out of order
* Closes #504