/** * Stops the SSL session by sending TLS <tt>close_notify</tt> message to * initiate TLS closure. * * @param session the {@link IoSession} to initiate TLS closure * @throws SSLException if failed to initiate TLS closure * @throws IllegalArgumentException if this filter is not managing the specified session */ public WriteFuture stopSsl(IoSession session) throws SSLException { SslHandler handler = getSslSessionHandler(session); NextFilter nextFilter = (NextFilter) session.getAttribute(NEXT_FILTER); WriteFuture future; synchronized (handler) { future = initiateClosure(nextFilter, session); } handler.flushScheduledEvents(); return future; }
/** * Stops the SSL session by sending TLS <tt>close_notify</tt> message to * initiate TLS closure. * * @param session the {@link IoSession} to initiate TLS closure * @return The Future for the initiated closure * @throws SSLException if failed to initiate TLS closure */ public WriteFuture stopSsl(IoSession session) throws SSLException { SslHandler sslHandler = getSslSessionHandler(session); NextFilter nextFilter = (NextFilter) session.getAttribute(NEXT_FILTER); WriteFuture future; try { synchronized (sslHandler) { future = initiateClosure(nextFilter, session); } sslHandler.flushScheduledEvents(); } catch (SSLException se) { sslHandler.release(); throw se; } return future; }
/** * Stops the SSL session by sending TLS <tt>close_notify</tt> message to * initiate TLS closure. * * @param session the {@link IoSession} to initiate TLS closure * @return The Future for the initiated closure * @throws SSLException if failed to initiate TLS closure */ public WriteFuture stopSsl(IoSession session) throws SSLException { SslHandler sslHandler = getSslSessionHandler(session); NextFilter nextFilter = (NextFilter) session.getAttribute(NEXT_FILTER); WriteFuture future; try { synchronized (sslHandler) { future = initiateClosure(nextFilter, session); } sslHandler.flushScheduledEvents(); } catch (SSLException se) { sslHandler.release(); throw se; } return future; }
@Override public void filterClose(final NextFilter nextFilter, final IoSession session) throws SSLException { SslHandler handler = (SslHandler) session.getAttribute(SSL_HANDLER); if (handler == null) { // The connection might already have closed, or // SSL might have not started yet. nextFilter.filterClose(session); return; } WriteFuture future = null; try { synchronized (handler) { if (isSslStarted(session)) { future = initiateClosure(nextFilter, session); future.addListener(new IoFutureListener<IoFuture>() { public void operationComplete(IoFuture future) { nextFilter.filterClose(session); } }); } } handler.flushScheduledEvents(); } finally { if (future == null) { nextFilter.filterClose(session); } } }
synchronized (sslHandler) { if (isSslStarted(session)) { future = initiateClosure(nextFilter, session); future.addListener(new IoFutureListener<IoFuture>() { @Override
synchronized (sslHandler) { if (isSslStarted(session)) { future = initiateClosure(nextFilter, session); future.addListener(new IoFutureListener<IoFuture>() { @Override
sslHandler.destroy(); } else { initiateClosure(nextFilter, session);
sslHandler.destroy(); } else { initiateClosure(nextFilter, session);
handler.destroy(); } else { initiateClosure(nextFilter, session);