From 3acc0ba1d8a58c515050258f97dcc223b6ec8ae0 Mon Sep 17 00:00:00 2001 From: naruse Date: Thu, 26 Oct 2017 15:29:36 +0000 Subject: [PATCH] Host header should add branckets to IPv6 address [Bug #12642] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60455 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/net/http.rb | 9 ++++----- test/net/http/test_http.rb | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/lib/net/http.rb b/lib/net/http.rb index 0fec32bb84..90f299f705 100644 --- a/lib/net/http.rb +++ b/lib/net/http.rb @@ -1612,11 +1612,10 @@ module Net #:nodoc: private def addr_port - if use_ssl? - address() + (port == HTTP.https_default_port ? '' : ":#{port()}") - else - address() + (port == HTTP.http_default_port ? '' : ":#{port()}") - end + addr = address + addr = "[#{addr}]" if addr.include?(":") + default_port = use_ssl? ? HTTP.https_default_port : HTTP.http_default_port + default_port == port ? addr : "#{addr}:#{port}" end def D(msg) diff --git a/test/net/http/test_http.rb b/test/net/http/test_http.rb index c5a77d3695..d3c2aecb9f 100644 --- a/test/net/http/test_http.rb +++ b/test/net/http/test_http.rb @@ -59,6 +59,33 @@ class TestNetHTTP < Test::Unit::TestCase end end + def test_addr_port + http = Net::HTTP.new 'hostname.example', nil, nil + addr_port = http.__send__ :addr_port + assert_equal 'hostname.example', addr_port + + http.use_ssl = true + addr_port = http.__send__ :addr_port + assert_equal 'hostname.example:80', addr_port + + http = Net::HTTP.new '203.0.113.1', nil, nil + addr_port = http.__send__ :addr_port + assert_equal '203.0.113.1', addr_port + + http.use_ssl = true + addr_port = http.__send__ :addr_port + assert_equal '203.0.113.1:80', addr_port + + http = Net::HTTP.new '2001:db8::1', nil, nil + addr_port = http.__send__ :addr_port + assert_equal '[2001:db8::1]', addr_port + + http.use_ssl = true + addr_port = http.__send__ :addr_port + assert_equal '[2001:db8::1]:80', addr_port + + end + def test_edit_path http = Net::HTTP.new 'hostname.example', nil, nil