mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Fix broken IPv6 addresses handling
This commit is contained in:
parent
c8bab30ce5
commit
c4a83b5454
2 changed files with 46 additions and 1 deletions
|
@ -5,7 +5,7 @@ module ActionDispatch
|
|||
module Http
|
||||
module URL
|
||||
IP_HOST_REGEXP = /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/
|
||||
HOST_REGEXP = /(^[^:]+:\/\/)?([^:]+)(?::(\d+$))?/
|
||||
HOST_REGEXP = /(^[^:]+:\/\/)?(\[[^\]]+\]|[^:]+)(?::(\d+$))?/
|
||||
PROTOCOL_REGEXP = /^([^:]+)(:)?(\/\/)?$/
|
||||
|
||||
mattr_accessor :tld_length
|
||||
|
|
45
actionpack/test/dispatch/routing/ipv6_redirect_test.rb
Normal file
45
actionpack/test/dispatch/routing/ipv6_redirect_test.rb
Normal file
|
@ -0,0 +1,45 @@
|
|||
require 'abstract_unit'
|
||||
|
||||
class IPv6IntegrationTest < ActionDispatch::IntegrationTest
|
||||
Routes = ActionDispatch::Routing::RouteSet.new
|
||||
include Routes.url_helpers
|
||||
|
||||
class ::BadRouteRequestController < ActionController::Base
|
||||
include Routes.url_helpers
|
||||
def index
|
||||
render :text => foo_path
|
||||
end
|
||||
|
||||
def foo
|
||||
redirect_to :action => :index
|
||||
end
|
||||
end
|
||||
|
||||
Routes.draw do
|
||||
get "/", :to => 'bad_route_request#index', :as => :index
|
||||
get "/foo", :to => "bad_route_request#foo", :as => :foo
|
||||
end
|
||||
|
||||
def _routes
|
||||
Routes
|
||||
end
|
||||
|
||||
APP = build_app Routes
|
||||
def app
|
||||
APP
|
||||
end
|
||||
|
||||
test "bad IPv6 redirection" do
|
||||
# def test_simple_redirect
|
||||
request_env = {
|
||||
'REMOTE_ADDR' => 'fd07:2fa:6cff:2112:225:90ff:fec7:22aa',
|
||||
'HTTP_HOST' => '[fd07:2fa:6cff:2112:225:90ff:fec7:22aa]:3000',
|
||||
'SERVER_NAME' => '[fd07:2fa:6cff:2112:225:90ff:fec7:22aa]',
|
||||
'SERVER_PORT' => 3000 }
|
||||
|
||||
get '/foo', env: request_env
|
||||
assert_response :redirect
|
||||
assert_equal 'http://[fd07:2fa:6cff:2112:225:90ff:fec7:22aa]:3000/', redirect_to_url
|
||||
end
|
||||
|
||||
end
|
Loading…
Reference in a new issue