aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--lib/uri/rfc2396_parser.rb2
-rw-r--r--test/uri/test_generic.rb4
3 files changed, 13 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 8812f9a231..d25205319c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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)