On Sun, 5 Dec 2021 16:44:05 GMT, Alan Bateman <al...@openjdk.org> wrote:

> There are several thread safety issues in java.net.ServerSocket, issues that 
> go back to at least JDK 1.4.
> 
> The issue of most concern is async close of a ServerSocket that is initially 
> created unbound and where close may be called at or around the time the 
> underlying SocketImpl is created or the socket is bound.
> 
> The summary of the changes are:
> 
> 1. The "impl" field is changed to be final field.
> 2. The closeLock is renamed to stateLock and is required to change the (now 
> volatile) created, bound or closed fields.
> 3. The needless synchronization has been removed from xxxSoTimeout and 
> xxxReceiveBufferSize.
> 
> There are many redundant checks for isClosed() and other state that could be 
> removed. Removing them would subtle change the exception thrown when there 
> are two or more failure conditions. So they are left as is.

LGTM. It's a bit distateful to change the semantics of `createImpl` but since 
the method is now private it does look OK.

-------------

Marked as reviewed by dfuchs (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/6712

Reply via email to