Review request for 4516760: (so) Intermittent SocketException: Transport endpoint is not connected (lnx)

Alan Bateman Alan.Bateman at Sun.COM
Fri Aug 7 18:01:03 UTC 2009


I need a reviewer for this tiny change. The shutdown(2) call fails with 
ENOTCONN when the socket is not connected. This seems to have different 
interpretations, at least for the case where the connection has been 
reset by the peer.  Solaris and Windows do not return the error for this 
case, Linux does, and this can cause applications using 
SocketChannel.shutdown{Input,Output} (or the adapter equivalents) to 
fail intermittently. Grizzly and others have run into this. We don't see 
this with classic networking because the return value isn't checked. The 
proposed fix is to ignore this specific error, which is harmless because 
the socket channel implementation checks the channel state before 
calling shutdown. The webrev is here:
  http://cr.openjdk.java.net/~alanb/4516760/webrev.00/

Thanks,
Alan.



More information about the core-libs-dev mailing list