URI::HTTP#query= behavior changed for 2396 uris
r48244 changed the behavior of the query method on uri objects generated by the 2396 parser. Here is a test to demonstrate the change:
require 'test/unit' require 'uri' module URI class TestRFC2396 < Test::Unit::TestCase def test_query_on_parse parser = URI::RFC2396_Parser.new uri = parser.parse "http://www.example.com/parse?location=1" assert_equal 'location=1', uri.query end end end
This test passed before r48244. I've attached a patch that fixes it and maintains the fix for Bug #10402
Updated by jimpo (Jim Posen) about 5 years ago
In r48934, why were both the RFC 2396 and RFC 3986 parsers changed to allow unescaped square brackets? The RFC 3986 spec does not allow square brackets. In @tenderlove's attached patch, [ and ] are still escaped when the RFC 3986 parser is used.
Also, the RFC 3986 parser accepts URIs with a % that is not followed by hex digits, which should be forbidden.