diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-03-08 16:07:54 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-03-08 16:07:54 +0000 |
commit | 0f7b26ab4e2922e767d730084cc29f713e05d126 (patch) | |
tree | bf2ed891adbbcf472ea49ef24bc26d13508b1acc | |
parent | 897af5dfcdc13bc98d2372097a53483d712c8d45 (diff) |
Raise ArgumentError if host component is nil
From: oss92 <[email protected]>
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.rb | 2 | ||||
-rw-r--r-- | test/net/http/test_http_request.rb | 12 |
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 '/' |