summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2023-04-24 16:16:53 -0700
committerGitHub <noreply@github.com>2023-04-25 11:16:53 +1200
commite5a30bf548d3ff44c1390b3273c9a51e632ff220 (patch)
tree57a0ca9b1ff7a21b19210367452c8470d9e666e0
parent70185aa15ad9fc75c5955a58c3bba2d18a8db69f (diff)
downloadrack-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.rb2
-rw-r--r--test/spec_request.rb9
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