RFR: 8332020: jwebserver tool prints invalid URL in case of IPv6 address binding
Jaikiran Pai
jpai at openjdk.org
Fri May 10 10:07:30 UTC 2024
On Fri, 10 May 2024 10:00:57 GMT, Daniel Fuchs <dfuchs at openjdk.org> wrote:
>> Can I please get a review of this change which proposes to address https://bugs.openjdk.org/browse/JDK-8332020?
>>
>> `jwebserver` when it is launched prints a URL where the server is accessible. When launched using an IPv6 bind address, the printed URL doesn't enclose the IPv6 literal in `[` `]` thus rendering it in the form:
>>
>> URL http://0:0:0:0:0:0:0:1:8000/
>>
>> This is an incorrect representation. As noted in RFC-2732 https://www.rfc-editor.org/rfc/rfc2732#section-2, the host literal is expected to be enclosed between `[` and `]`.
>>
>> The commit in this PR addresses that issues. A new jtreg test has been introduced to reproduce this issue and verify the fix.
>
> src/jdk.httpserver/share/classes/sun/net/httpserver/simpleserver/SimpleFileServerImpl.java line 185:
>
>> 183: writer.println(ResourceBundleHelper.getMessage("msg.start.anylocal", root, port, url));
>> 184: } else {
>> 185: writer.println(ResourceBundleHelper.getMessage("msg.start.other", root, addr, port, url));
>
> I would suggest simply adding '[' and ']' around the address in that case - `addr = '[' + addr + ']';` which would allow to leave the resource bundle unchanged.
In addition to using that param value in the URL, that resource bundle message also uses it in another message:
Serving /tmp/foo/ and subdirectories on 0:0:0:0:0:0:0:1 port 8000
If we change the `addr` being passed here to be `[` + addr + `]`, then this above message would be:
Serving /tmp/foo/ and subdirectories on [0:0:0:0:0:0:0:1] port 8000
Is that fine?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/19173#discussion_r1596556042
More information about the net-dev
mailing list