On Mon, Apr 29, 2019 at 10:54 AM Michael McMahon <michael.x.mcma...@oracle.com> wrote: > > > > On 29/04/2019, 13:08, Chris Hegarty wrote: > > > > On 29/04/2019 12:17, Alan Bateman wrote: > >> ... > >> Changing SIS.close and SOS.close to caller super.close raises a > >> number of questions. These close should never be called > >> Socket.getInputStream and getOutputStream don't leak these streams to > >> user code (they used to but now in JDK 13). My concern is that if > >> they were ever to be called then it will be calling the FIS/FOS close > >> methods which brings along a several questions on it interacts with > >> the cleaner mechanism used by those classes. > > > > Since 8220493, these socket in/out stream close methods are effectively > > no longer in charge of closing the socket ( since that will happen from > > the outer stream wrapper in Socket ). I wonder if they should simply > > call impl.close()? > > > > On that point. Since it might not be obvious that SIS.close and > SOS.close are no longer used, > it might be more useful to just replace the close implementations with a > comment and an assertion > which underlines that fact.
As someone who does a lot of socket programming (albeit mostly non-blocking), I would be *shocked* if closing a socket input or output stream didn't translate into shutting down input or output (respectively). Not close per se but socket shutdown. -- - DML