Mikhail Petrov created IGNITE-24948:
---------------------------------------

             Summary: SSL Engine may not be closed properly during NIO session 
close.
                 Key: IGNITE-24948
                 URL: https://issues.apache.org/jira/browse/IGNITE-24948
             Project: Ignite
          Issue Type: Bug
            Reporter: Mikhail Petrov


Lets revisit steps that are occurred during session close:
GridSelectorNioSessionImpl.close() -> .. -> GridNioSslFilter.onSessionClose() 
-> GridNioSslFilter.shutdownSession() -> GridNioSslHandler.writeNetBuffer() -> 
... -> HeadFilter#onSessionClose -> GridNioServer#close

GridNioSslFilter.shutdownSession() - closes SSL engine.

GridNioSslHandler.writeNetBuffer() - asks SSL Engine to generate message with 
CLOSE-NOTIFY header. Which is intended to notify the SSL engine on the other 
side of the connection that the session has been closed.  Puts this message to 
session's outbound buffer that will be asynchronously processes by NIO worker.

GridNioServer#close  - adds to the NIO worker queue "state change request" that 
closes the connection.

AbstractNioClientWorker#bodyInternal - NIO worker handles first handles state 
change requests and then writes data to the socket.

As a result, if connection close request and  CLOSE-NOTIFY message is handled 
by 1 spin of NIO worker, we simply close the connection and do not send a 
CLOSE-NOTIFY message to the SSL Engine.






--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to