summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-03-08 16:07:54 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-03-08 16:07:54 +0000
commit0f7b26ab4e2922e767d730084cc29f713e05d126 (patch)
treebf2ed891adbbcf472ea49ef24bc26d13508b1acc
parent897af5dfcdc13bc98d2372097a53483d712c8d45 (diff)
Raise ArgumentError if host component is nil
From: oss92 <mohamed.o.alnagdy@gmail.com> fix https://github.com/ruby/ruby/pull/1278 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62698 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--lib/net/http/generic_request.rb2
-rw-r--r--test/net/http/test_http_request.rb12
2 files changed, 14 insertions, 0 deletions
diff --git a/lib/net/http/generic_request.rb b/lib/net/http/generic_request.rb
index a78ec16431..3ff6d88f0c 100644
--- a/lib/net/http/generic_request.rb
+++ b/lib/net/http/generic_request.rb
@@ -14,6 +14,8 @@ class Net::HTTPGenericRequest
@response_has_body = resbody
if URI === uri_or_path then
+ raise ArgumentError, "not an HTTP URI" unless URI::HTTP === uri_or_path
+ raise ArgumentError, "no host component for URI" unless uri_or_path.hostname
@uri = uri_or_path.dup
host = @uri.hostname.dup
host << ":".freeze << @uri.port.to_s if @uri.port != @uri.default_port
diff --git a/test/net/http/test_http_request.rb b/test/net/http/test_http_request.rb
index c2144d86c7..b7515b7e98 100644
--- a/test/net/http/test_http_request.rb
+++ b/test/net/http/test_http_request.rb
@@ -65,6 +65,18 @@ class HTTPRequestTest < Test::Unit::TestCase
'Bug #7381 - do not decode content if the user overrides'
end if Net::HTTP::HAVE_ZLIB
+ def test_initialize_GET_uri
+ req = Net::HTTP::Get.new(URI("http://example.com/foo"))
+ assert_equal "/foo", req.path
+ assert_equal "example.com", req['Host']
+
+ req = Net::HTTP::Get.new(URI("https://example.com/foo"))
+ assert_equal "/foo", req.path
+ assert_equal "example.com", req['Host']
+
+ assert_raise(ArgumentError){ Net::HTTP::Get.new(URI("urn:ietf:rfc:7231")) }
+ end
+
def test_header_set
req = Net::HTTP::Get.new '/'