Hi Alan,
I have modified the test case[1] according to your comments.
For the ::0 (or ::) I have found InetAddress.isReachable will go to ipv6
branch rather than ipv4 branch which is the path for 0.0.0.0.
Path for ::0
InetAddress.isReachable -> (Inet6AddressImpl.c)
Java_java_net_Inet6AddressImpl_isReachable0
Path for 0.0.0.0
InetAddress.isReachable -> (Inet6AddressImpl.c)
Java_java_net_Inet6AddressImpl_isReachable0 -> (Inet4AddressImpl.c)
Java_java_net_Inet4AddressImpl_isReachable0
And the ::0 passes the test case[1] so there is no problem with current
implementation for ::0.
[2] http://cr.openjdk.java.net/~littlee/OJDK-217/webrev.02/
Thanks a lot!
On 04/25/2012 05:15 PM, Alan Bateman wrote:
On 25/04/2012 07:18, Deven You wrote:
Hi Michael,
I also add the bug number into the test case[1], please review it:
[1] http://cr.openjdk.java.net/~youdwei/inet4adr/webrev.01/
It's in the bug database as:
7163874: InetAddress.isReachable should support pinging 0.0.0.0
My take on this is that this is not really a bug as it's going to
platform specific as to whether the native ping tool will special-case
this address. However I don't object to handling special-casing this
address. Have you thought about ::0 too and have you thought about
clarifying the javadoc so that developers have some expectation as to
how this method should behave when invoked on this address?
A couple of comments on the test:
- how about changing it to PingThis.java? (Javanet.java is a bit too
generic).
- I think Chris mentioned this already but the indent is a bit odd too.
- I would suggest changing "
Java_java_net_Inet6AddressImpl_isReachable0" in the @summary to
"InetAddress.isReachable".
- I'd suggest renaming "b" to "isReachable" and then you can do "if
(isReachable) ..." which is more readable than "if (b == true) ..."
-Alan
--
Best Regards,
Deven