I haven't posted here before so let me start by thanking you guys for the great 
work.

We are using 3.0.1 in some pretty heavy production environments.   A recent 
issue arose with a customer who had trouble during SSL handshakes.  The 
negotiation was timing out:

 [120009] java.net.SocketTimeoutException: Read timed out
                at java.net.SocketInputStream.socketRead0(Native Method)
                at java.net.SocketInputStream.read(Unknown Source)
                at com.sun.net.ssl.internal.ssl.InputRecord.a(Unknown Source)
                at com.sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source)
                at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(Unknown Source)
                at com.sun.net.ssl.internal.ssl.SSLSocketImpl.j(Unknown Source)
                at com.sun.net.ssl.internal.ssl.SSLSocketImpl.b(Unknown Source)
                at 
com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
                ...

We're setting SO_TIMEOUT to 2 minutes.  The customer reports that the machine 
that initiated the connection ended up with a lot of sockets in CLOSE_WAIT.  
From what I've been able to glean from some quick searches, it sounds like on 
some socket stacks, a shutdownOutput is required, and that close() is not 
enough to nudge the socket from CLOSE_WAIT to LAST_ACK.  I notice that in the 
4.x codebase, shutdownOutput is being used, but in the 3.x code it is not.  Can 
anyone confirm that this is indeed the case for Linux?  If so, is there a known 
workaround other than upgrading to 4.x?

Thanks for any help you can offer, and thanks again for all the countless hours 
(and dollars!) your efforts have saved us.


Reply via email to