Remove some more synchronization stuff which is not needed anymore

This commit is contained in:
norman 2012-06-06 08:24:44 +02:00
parent a56ea06e58
commit a4b2d70264

View File

@ -33,7 +33,6 @@ import java.io.IOException;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.channels.ClosedChannelException; import java.nio.channels.ClosedChannelException;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.net.ssl.SSLEngine; import javax.net.ssl.SSLEngine;
@ -161,7 +160,7 @@ public class SslHandler extends StreamToStreamCodec {
return defaultBufferPool; return defaultBufferPool;
} }
private volatile ChannelHandlerContext ctx; private ChannelHandlerContext ctx;
private final SSLEngine engine; private final SSLEngine engine;
private final SslBufferPool bufferPool; private final SslBufferPool bufferPool;
private final Executor delegatedTaskExecutor; private final Executor delegatedTaskExecutor;
@ -172,11 +171,13 @@ public class SslHandler extends StreamToStreamCodec {
private volatile boolean enableRenegotiation = true; private volatile boolean enableRenegotiation = true;
final Object handshakeLock = new Object(); final Object handshakeLock = new Object();
private boolean handshaking; private boolean handshaking;
private volatile boolean handshaken; private volatile boolean handshaken;
private volatile ChannelFuture handshakeFuture; private ChannelFuture handshakeFuture;
private boolean sentCloseNotify;
private final AtomicBoolean sentCloseNotify = new AtomicBoolean();
int ignoreClosedChannelException; int ignoreClosedChannelException;
final Object ignoreClosedChannelExceptionLock = new Object(); final Object ignoreClosedChannelExceptionLock = new Object();
private volatile boolean issueHandshake; private volatile boolean issueHandshake;
@ -557,7 +558,7 @@ public class SslHandler extends StreamToStreamCodec {
} finally { } finally {
unwrap(ctx, ctx.channel(), ChannelBuffers.EMPTY_BUFFER, 0, 0, ChannelBuffers.EMPTY_BUFFER); unwrap(ctx, ctx.channel(), ChannelBuffers.EMPTY_BUFFER, 0, 0, ChannelBuffers.EMPTY_BUFFER);
engine.closeOutbound(); engine.closeOutbound();
if (!sentCloseNotify.get() && handshaken) { if (!sentCloseNotify && handshaken) {
try { try {
engine.closeInbound(); engine.closeInbound();
} catch (SSLException ex) { } catch (SSLException ex) {
@ -1021,7 +1022,8 @@ public class SslHandler extends StreamToStreamCodec {
} }
if (!engine.isInboundDone()) { if (!engine.isInboundDone()) {
if (sentCloseNotify.compareAndSet(false, true)) { if (!sentCloseNotify) {
sentCloseNotify = true;
engine.closeOutbound(); engine.closeOutbound();
try { try {
ChannelFuture closeNotifyFuture = wrapNonAppData(context, context.channel()); ChannelFuture closeNotifyFuture = wrapNonAppData(context, context.channel());