Subject: | URI::Escape -> uri_escape, uri_unescape does not conform to RFC3986 |
Date: | Thu, 20 Mar 2014 11:28:50 +0000 |
To: | bug-URI [...] rt.cpan.org |
From: | Alberto Curro <bertothunder [...] gmail.com> |
Hi,
I've started using URI::Escape's uri_escape and uri_unescape methods, and
found uri_escape creates a escaped version non-conformant to RFC 3986.
Input: http://192.168.1.2:8888/HLS 1/1%_--+0.ts
Output: http%3A%2F%2F192.168.1.2%3A8888%2FHLS%201%2F1%25_--%2B0.ts
But should be: http://192.168.1.2:8888/HLS%201/1%25_--%2B0.ts
This is because the %Unsafe is RFC3986 => qr/[^A-Za-z0-9\-\._~]/
while should be RFC3986 =>
qr/[^A-Za-z0-9\/\-\.\?\[\]\@\$\&#:!=+*(),;'_~]/
With the new %Unsafe, the output is right:
http://192.168.1.2:8080/HLS%201/1%25_--+0.ts
I've attached a diff file to this message with the proper change. %Unsafe
for RFC2732 should be changed as well, but since it's not being used, I've
not changed it.
Regards
Alberto
Message body is not shown because sender requested not to inline it.