Hi Xuelei,
This is not my area of expertise - so I'm going to rephrase
what I understand (which may be wrong):
SSLEngineImpl.java:
This change makes sure that the SSLEngineResult::getStatus()
returns Status.CLOSED when closure has been initiated, even
if the engine is only half-closed at that time.
This allows the application to complete the closure by looking
at the state of the inbound/outbound.
TransportContext.java:
This change makes sure that the appropriate
HandshakeStatus is returned to allow the completion of the
closure: reading/sending the closure acknowledgement.
If my understanding is correct - then I think this change is good.
As far as I can see this is exactly what we are expecting in
the java.net.http HttpClient SSLFlowDelegate, so that looks good
to me!
As Chris mentioned, it would be good to have a deterministic test
to verify the behavior.
best regards,
-- daniel
On 22/12/2018 17:20, Xue-Lei Fan wrote:
Hi,
Could I get the update reviewed?
http://cr.openjdk.java.net/~xuelei/8214418/webrev.00/
The reproducing testing case passed with the update.
The issue is caused by the handshake status "NEED_WRAP" while the
connection is half-closed. An application may just call wrap() when the
handshake status is "NEED_WRAP". For compatibility, I changed the
handshake status from NEED_WRAP back to NOT_HANDSHAKING for inbound
half-closed connection. An application can use
SSLEngine.isOutboundDone() for the determination if SSLEngine.wrap()
should be called.
Thanks,
Xuelei