diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | lib/uri/rfc2396_parser.rb | 2 | ||||
-rw-r--r-- | test/uri/test_generic.rb | 4 |
3 files changed, 13 insertions, 1 deletions
@@ -1,3 +1,11 @@ +Tue May 19 11:22:28 2015 NARUSE, Yui <naruse@ruby-lang.org> + + * lib/uri/rfc2396_parser.rb (initialize_pattern): + URI::Generic.build should accept port as a string. + pattern[:PORT] is not defined for long. + by Dave Slutzkin <daveslutzkin@fastmail.fm> + https://github.com/ruby/ruby/pull/804 fix GH-804 + Tue May 19 11:18:46 2015 Nobuyoshi Nakada <nobu@ruby-lang.org> * include/ruby/ruby.h (rb_data_typed_object_alloc), diff --git a/lib/uri/rfc2396_parser.rb b/lib/uri/rfc2396_parser.rb index c192f65ec1..a8af37502a 100644 --- a/lib/uri/rfc2396_parser.rb +++ b/lib/uri/rfc2396_parser.rb @@ -401,7 +401,7 @@ module URI # host = hostname | IPv4address | IPv6reference (RFC 2732) ret[:HOST] = host = "(?:#{hostname}|#{ipv4addr}|#{ipv6ref})" # port = *digit - port = '\d*' + ret[:PORT] = port = '\d*' # hostport = host [ ":" port ] ret[:HOSTPORT] = hostport = "#{host}(?::#{port})?" diff --git a/test/uri/test_generic.rb b/test/uri/test_generic.rb index 37605d5de5..c0597b91dc 100644 --- a/test/uri/test_generic.rb +++ b/test/uri/test_generic.rb @@ -761,6 +761,10 @@ class URI::TestGeneric < Test::Unit::TestCase u = URI::Generic.build(['http', nil, 'example.com', 80, nil, '/foo', nil, nil, nil]) assert_equal('http://example.com:80/foo', u.to_s) + u = URI::Generic.build(:port => "5432") + assert_equal(":5432", u.to_s) + assert_equal(5432, u.port) + u = URI::Generic.build(:scheme => "http", :host => "::1", :path => "/bar/baz") assert_equal("http://[::1]/bar/baz", u.to_s) assert_equal("[::1]", u.host) |