RFR: 8293590: Some syntax checks performed by URL.openConnection() could be performed earlier, at URL construction [v3]

Alan Bateman alanb at openjdk.org
Fri Oct 7 08:27:15 UTC 2022


On Thu, 6 Oct 2022 15:10:18 GMT, Daniel Fuchs <dfuchs at openjdk.org> wrote:

>> Many built-in URL Handlers perform additional syntax checking on the URL when `URLStreamHandler::openConnection` / connect is called. In some cases, some of these checks could be also performed earlier, when `URLStreamHandler::parseURL` is called.
>> 
>> This fix proposes to slightly modify the behavior of JDK built-in URL handlers to perform these checks early, and throw `MalformedURLException` earlier, at URL construction time, when that is possible, instead of delaying until `URL::openConnection` or `URLConnection::connect` are called.
>> 
>> Because java.net.URL constructors are already specified to throw `MalformedURLException` in such cases, no API documentation changes are necessary. 
>> 
>> A new JDK specific system property `-Djdk.net.url.delayParsing` or `-Djdk.net.url.delayParsing=true` can be specified on the command line to revert to the previous behavior. By default, the property is not set, and the new behavior is in place. The property can be specified on the java command line if unexpected regressions are observed.
>> 
>> The new property will be documented in release notes, and may be removed in a future release.
>> 
>> CSR: https://bugs.openjdk.org/browse/JDK-8294592
>
> Daniel Fuchs has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since the last revision:
> 
>  - Merge branch 'master' into url-early-parsing-8293590
>  - Merge branch 'master' into url-early-parsing-8293590
>  - 8293590

src/java.base/share/classes/sun/net/util/IPAddressUtil.java line 496:

> 494:     // is found. The caller is expected to use that message to
> 495:     // throw an exception.
> 496:     public static String checkUserInfo(String str) {

I think IPAddressUtil was original introduced as a utility class to support parsing of IP addresses and do text <--> byte[] conversion. It has grown into checking the authority and userInfo components so I think is begging for a rename or some refactoring. It's not this PR but I hope you see what I mean on the naming/purpose of this class.

-------------

PR: https://git.openjdk.org/jdk/pull/10534


More information about the net-dev mailing list