On 10/06/2019 15:18, Michael McMahon wrote:
Hi,

Could I get the following change to net/nio reviewed please?

It is a general cleanup of IPv6 scope_id handling which removes
a lot of native code trickery (mostly in Linux) and simplifies the handling
of scope_ids such that:

a) when binding/connecting/sending to a link-local address on the same machine,    it is allowed to use addresses without a scope_id. In this case, we check local NetworkInterfaces
   for the correct scope_id to use.

b) when connecting/sending to a remote link-local address, then a scope_id must be specified
    at all times.

Scope_ids should be handled consistently between net and NIO and across all platforms now.

http://cr.openjdk.java.net/~michaelm/8216417/webrev.2/index.html
This looks like a really good cleanup.

One thing I notice is that AbstractPlainSocketImpl.connect sets this.address before converting it to the scoped address. This impacts the address returned by Socket::getInetAddress so I think it needs to set this.address first.

DatagramChannel.send will need to use toScopeAddress(InetSocketAddress) for the "not connected" case, probably after the SM check. There is probably a slightly bigger question here on on SM checks and  whether it's interesting to have the scope ID in the address or not. Long standing behavior seems to be to call the SM with the address that the user has specified and this may or may not include the scope ID.

-Alan

Reply via email to