@Override public void sessionClosed(NextFilter nextFilter, IoSession session) throws SSLException { SslHandler sslHandler = getSslSessionHandler(session); try { synchronized (sslHandler) { // release resources sslHandler.destroy(); } } finally { // notify closed session nextFilter.sessionClosed(session); } }
@Override public void sessionClosed(NextFilter nextFilter, IoSession session) throws SSLException { SslHandler sslHandler = getSslSessionHandler(session); try { synchronized (sslHandler) { // release resources sslHandler.destroy(); } } finally { // notify closed session nextFilter.sessionClosed(session); } }
@Override public void sessionClosed(NextFilter nextFilter, IoSession session) throws SSLException { SslHandler handler = getSslSessionHandler(session); try { synchronized (handler) { // release resources handler.destroy(); } handler.flushScheduledEvents(); } finally { // notify closed session nextFilter.sessionClosed(session); } }
private WriteFuture initiateClosure(NextFilter nextFilter, IoSession session) throws SSLException { SslHandler handler = getSslSessionHandler(session); // if already shut down if (!handler.closeOutbound()) { return DefaultWriteFuture.newNotWrittenFuture( session, new IllegalStateException("SSL session is shut down already.")); } // there might be data to write out here? WriteFuture future = handler.writeNetBuffer(nextFilter); if (future == null) { future = DefaultWriteFuture.newWrittenFuture(session); } if (handler.isInboundDone()) { handler.destroy(); } if (session.containsAttribute(USE_NOTIFICATION)) { handler.scheduleMessageReceived(nextFilter, SESSION_UNSECURED); } return future; }
/** * (Re)starts SSL session for the specified <tt>session</tt> if not started yet. * Please note that SSL session is automatically started by default, and therefore * you don't need to call this method unless you've used TLS closure. * * @return <tt>true</tt> if the SSL session has been started, <tt>false</tt> if already started. * @throws SSLException if failed to start the SSL session */ public boolean startSsl(IoSession session) throws SSLException { SslHandler handler = getSslSessionHandler(session); boolean started; synchronized (handler) { if (handler.isOutboundDone()) { NextFilter nextFilter = (NextFilter) session .getAttribute(NEXT_FILTER); handler.destroy(); handler.init(); handler.handshake(nextFilter); started = true; } else { started = false; } } handler.flushScheduledEvents(); return started; }
sslHandler.destroy();
private WriteFuture initiateClosure(NextFilter nextFilter, IoSession session) throws SSLException { SslHandler sslHandler = getSslSessionHandler(session); WriteFuture future = null; // if already shut down try { synchronized(sslHandler) { if (!sslHandler.closeOutbound()) { return DefaultWriteFuture.newNotWrittenFuture(session, new IllegalStateException( "SSL session is shut down already.")); } // there might be data to write out here? future = sslHandler.writeNetBuffer(nextFilter); if (future == null) { future = DefaultWriteFuture.newWrittenFuture(session); } if (sslHandler.isInboundDone()) { sslHandler.destroy(); } } // Inform that the session is not any more secured session.getFilterChain().fireEvent(SslEvent.UNSECURED); } catch (SSLException se) { sslHandler.release(); throw se; } return future; }
if (sslHandler.isOutboundDone()) { NextFilter nextFilter = (NextFilter) session.getAttribute(NEXT_FILTER); sslHandler.destroy(); sslHandler.init(); sslHandler.handshake(nextFilter);
if (sslHandler.isOutboundDone()) { NextFilter nextFilter = (NextFilter) session.getAttribute(NEXT_FILTER); sslHandler.destroy(); sslHandler.init(); sslHandler.handshake(nextFilter);
handler.destroy(); } else { initiateClosure(nextFilter, session);