RFR [11] 8200304: TwoStacksPlainDatagramSocketImpl and socket cleaner

Alan Bateman Alan.Bateman at oracle.com
Thu Mar 29 10:43:00 UTC 2018



On 29/03/2018 11:10, Chris Hegarty wrote:
> :
> This is much simpler.
>    
>        @Override
>        protected synchronized void bind0(int lport, InetAddress laddr)
>            throws SocketException
>        {
> +         // The native bind0 may close one or both of the underlying file
> +         // descriptors, and even create new sockets, so the safest course of
> +         // action is to unregister the socket cleaners, and register afterwards.
> +         SocketCleanable.unregister(fd);
> +         SocketCleanable.unregister(fd1);
> +
>            bind0(lport, laddr, exclusiveBind);
> +
> +         SocketCleanable.register(fd);
> +         SocketCleanable.register(fd1);
>        }
>
This is much simpler but are there any cases where bind0 will throw an 
exception with open sockets? It looks like the !ipv6_supported case 
might do that when the native bind fails (the ipv6_supported case seems 
to clean up).

-Alan


More information about the net-dev mailing list