Details
-
New Feature
-
Status: Closed
-
Major
-
Resolution: Fixed
-
5.1
-
None
Description
new URIBuilder("https://[::1]:432/path").build(); Correctly produces 'https://[::1]:432/path'
new URIBuilder("https://[::1]:432/path").setPort(123).build(); Incorrectly produces 'https://%5B%3A%3A1%5D:123/path' where the resulting uri.getPort is -1 and uri.getHost() is null.
The second example fails because we skip the fast path that preserves input data when mutations are made.
I think we need to check for the existence of https://tools.ietf.org/html/rfc2732 brackets in a third branch: https://github.com/apache/httpcomponents-core/blob/cfb6871bd84e0f17068dea1c17d05b848c02ea69/httpcore5/src/main/java/org/apache/hc/core5/net/URIBuilder.java#L293-L297
Alternatively we could strip brackets when we decode/store the host value in URIBuilder, however the 'getHost' result might be confusing.