diff options
author | Jeremy Evans <code@jeremyevans.net> | 2023-04-24 16:16:53 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-25 11:16:53 +1200 |
commit | e5a30bf548d3ff44c1390b3273c9a51e632ff220 (patch) | |
tree | 57a0ca9b1ff7a21b19210367452c8470d9e666e0 | |
parent | 70185aa15ad9fc75c5955a58c3bba2d18a8db69f (diff) | |
download | rack-e5a30bf548d3ff44c1390b3273c9a51e632ff220.tar.gz |
Support underscore in host names for Rack 2.2 (Fixes #2070) (#2071)
This makes Rack 2.2 behavior similar to Rack 2.1 and Rack 3.0 in
regards to underscore in host names.
-rw-r--r-- | lib/rack/request.rb | 2 | ||||
-rw-r--r-- | test/spec_request.rb | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/lib/rack/request.rb b/lib/rack/request.rb index fea98459..0bd8ee45 100644 --- a/lib/rack/request.rb +++ b/lib/rack/request.rb @@ -608,7 +608,7 @@ module Rack (?<ip4>[\d\.]+) | # A hostname: - (?<name>[a-zA-Z0-9\.\-]+) + (?<name>[a-zA-Z0-9\.\-_]+) ) # The optional port: (:(?<port>\d+))? diff --git a/test/spec_request.rb b/test/spec_request.rb index 51cfcdc8..db52dea2 100644 --- a/test/spec_request.rb +++ b/test/spec_request.rb @@ -122,6 +122,11 @@ class RackRequestTest < Minitest::Spec req.hostname.must_equal "123foo.example.com" req = make_request \ + Rack::MockRequest.env_for("/", "HTTP_HOST" => "some_service:3001") + req.host.must_equal "some_service" + req.hostname.must_equal "some_service" + + req = make_request \ Rack::MockRequest.env_for("/", "SERVER_NAME" => "example.org", "SERVER_PORT" => "9292") req.host.must_equal "example.org" req.hostname.must_equal "example.org" @@ -157,6 +162,10 @@ class RackRequestTest < Minitest::Spec req.port.must_equal 81 req = make_request \ + Rack::MockRequest.env_for("/", "HTTP_HOST" => "some_service:3001") + req.port.must_equal 3001 + + req = make_request \ Rack::MockRequest.env_for("/", "SERVER_NAME" => "example.org", "SERVER_PORT" => "9292") req.port.must_equal 9292 |