IPV6 literal string handling in tests

Mat Carter Matthew.Carter at microsoft.com
Thu Jul 16 21:31:24 UTC 2020


Hello net-dev

I have been investigating an intermittent error with the following tests in jdk11u and 
identified fixes that could be back-ported:
 
   tests/jdk/sun/net/www/protocal/httponly.java
   tests/jdk/sun/net/www/protocal/nocache.java
 
The error was a malformed string being passed to the URI/URL constructor 
(that parses the given string) in the format  "http://0:0:0:0:1%1:65500/path",
 the root cause being that InetAddress.getHostAddress in some cases returns 
an IPV6 literal string (e.g. "0:0:0:0:1%1"), this specific constructor
expects IPV6 literals to be enclosed in brackets e.g. "http://[0:0:0:0:1%1]:65500/path

The issue has been addressed in tip with following change 
https://hg.openjdk.java.net/jdk/jdk/rev/5302477c8285 in response 
to https://bugs.openjdk.java.net/browse/JDK-8224761
 
Has there been discussion about back-porting the fix to the tests to jdk11u?

I looked for other tests with the pattern that can result in malformed URLs 
and only found one case in:
 
        tests/jdk/sun/net/www/http/KeepAliveCache/B5045306.java
 
This has also been fixed in tip with a different change 
http://hg.openjdk.java.net/jdk/jdk/rev/3131927311ee
in response to https://bugs.openjdk.java.net/browse/JDK-8230858

However these two changes achieve the same results using two different solutions; 
the fix for B5045306.java and 12 other tests in tip use the following code pattern when
using the URI/URL constructor that takes a string to parse:
 
    String hostAddr = InetAddress.getLocalHost().getHostAddress();
    if (hostAddr.indexof(':') > -1) hostAddr = "[" + hostAddr + "]";
 
Whereas the fix for httponly.java and nocache.java use the test utility class  
test/lib/jdk/tests/lib/net/URIBuilder.java, which essentially boils down to using
the URI/URL constructor that constructs a hierarchical URI from the given components
 
Regardless of whether the fixes are back-ported to jdk11u, is there a shared view in 
this mailing list that we pick one pattern on tip for consistency, I'm happy to make
the changes if there is agreement
 
Thanks in advance
Mat Carter
Microsoft


More information about the net-dev mailing list