Yes, as Alan said the way IPv6 is set up in the JDK means that either you have:

AF_INET sockets (which are IPv4 only) or
AF_INET6 sockets (which can be IPv4 or IPv6)

It's not possible to mix the two types. If inetd passes an AF_INET
socket on startup then the VM is stuck in IPv4 mode.

I've updated the webrev after the last comments:

http://cr.openjdk.java.net/~michaelm/8211842/webrev.2/

It's really just refactoring. So, unless anyone has a comment I will push
the fix shortly.

Thanks,
Michael

On 29/11/2018, 19:03, Alan Bateman wrote:
On 29/11/2018 18:04, Bernd Eckenfels wrote:

Hello,

I wonder if that conclusion „stdin = tcp4 -> disable tcp6“ is correct at all. The started program might serve a v4 connection but it still could want to do ipv6 client connections.

If somebody wants to disable v4 they can do it regularly with the System property.


The check is important because the JDK doesn't support having some Socket or SocketChannel objects be created with IPv4 sockets, and others with IPv6 sockets. The only exception to this is DatagramChannel where the protocol family is exposed in the API. The RDMA socket API under discussion on nio-dev will be another case.

-Alan

Reply via email to