Thank you Christoph and Chris for the review!
I made the following suggested changes:
- fdAccess made private static final in both TwoStacks and DualStack.
- removed redundant check IS_NULL(iaObj) at bind0 (indeed, the address
was already checked at Java level).
For now, I would prefer to keep the checks for family == IPv4 as they are.
I totally agree they should be moved to Java, but I'm planning to do
this during the TwoStacks-DualStack merge step.
I'm also planning to add a regtest to make sure that Inet6Address is
rejected when fed to a IPv4-only socked.
Are we good to push now?
Please let me know, if you'd like me to send the updated webrev set.
With kind regards,
Ivan
On 3/27/18 6:47 AM, Chris Hegarty wrote:
Ivan,
On 26 Mar 2018, at 23:08, Ivan Gerasimov <[email protected]> wrote:
Hello everyone!
A few modifications were done to the patch.
Below is the list of updated parts of the patch with comments about what has
changed, comparing to the previous version of the patch.
The patched JDK builds fine and all the tests pass well.
WEBREV-000: http://cr.openjdk.java.net/~igerasim/8198358/04/000/webrev/
Ok.
WEBREV-001: http://cr.openjdk.java.net/~igerasim/8198358/04/001/webrev/
Ok.
WEBREV-002: http://cr.openjdk.java.net/~igerasim/8198358/04/002/webrev/
Can we make fdAccess final ( and in DualStack too )
static *final* JavaIOFileDescriptorAccess fdAccess
JNIEXPORT void JNICALL Java_java_net_TwoStacksPlainSocketImpl_bind0 ...
142 if (IS_NULL(iaObj)) {
143 JNU_ThrowNullPointerException(env, "inet address argument");
144 return;
145 }
146
147 family = getInetAddress_family(env, iaObj);
148 if (family != java_net_InetAddress_IPv4) {
149 JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException",
150 "Protocol family not supported");
151 return;
152 }
The address is already null checked at the java level, so can be removed here,
no?
Can the family check be hoisted up into Java? I think this will help when it
comes
to the eventual merge with DualStack.
The native code will then align with DualStack’s. I prefer to reduce and align
the native layers as much as possible. It’s easier to deal with differences at
the Java level.
WEBREV-003: http://cr.openjdk.java.net/~igerasim/8198358/04/003/webrev/
- Rebased to reflect recent changes to socketListen()
Ok.
WEBREV-004: http://cr.openjdk.java.net/~igerasim/8198358/04/004/webrev/
Ok.
WEBREV-005: http://cr.openjdk.java.net/~igerasim/8198358/04/005/webrev/
Ok.
WEBREV-006: http://cr.openjdk.java.net/~igerasim/8198358/04/006/webrev/
Ok.
WEBREV-007: http://cr.openjdk.java.net/~igerasim/8198358/04/007/webrev/
Ok.
WEBREV-008: http://cr.openjdk.java.net/~igerasim/8198358/04/008/webrev/
- The check the line 400 was changed to test if (newfd < 0) and then if (newfd
== -2).
I don't think the later is quite accurate (cannot find in the documentation
that accept can return -2), but it is how it was done in TwoStacks originally,
so no regression is expected.
Ok.
413 if (sa.sa.sa_family != AF_INET) {
414 JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException",
415 "Protocol family not supported");
416 NET_SocketClose(newfd);
417 return -1;
418 }
This check could be hoisted up to the Java-level too, no? Again, I think it
would be easier to deal with this kinda differences in Java.
WEBREV-009: http://cr.openjdk.java.net/~igerasim/8198358/04/009/webrev/
- Added missing 'return -1;' at the line 188.
Can the family be checked at the java level.
WEBREV-010: http://cr.openjdk.java.net/~igerasim/8198358/04/010/webrev/
Ok.
WEBREV-011: http://cr.openjdk.java.net/~igerasim/8198358/04/011/webrev/
Ok.
WEBREV-012: http://cr.openjdk.java.net/~igerasim/8198358/04/012/webrev/
Ok.
WEBREV-013: http://cr.openjdk.java.net/~igerasim/8198358/04/013/webrev/
Ok.
WEBREV-014: http://cr.openjdk.java.net/~igerasim/8198358/04/014/webrev/
Good.
-Chris.
--
With kind regards,
Ivan Gerasimov