diff --git a/src/main/java/org/jboss/netty/handler/ssl/SslHandler.java b/src/main/java/org/jboss/netty/handler/ssl/SslHandler.java index 8d9db87cdc..e2921bcd39 100644 --- a/src/main/java/org/jboss/netty/handler/ssl/SslHandler.java +++ b/src/main/java/org/jboss/netty/handler/ssl/SslHandler.java @@ -621,10 +621,8 @@ public class SslHandler extends FrameDecoder { runDelegatedTasks(); break; case FINISHED: - setHandshakeSuccess(channel); - wrap(ctx, channel); - break loop; case NOT_HANDSHAKING: + setHandshakeSuccess(channel); wrap(ctx, channel); break loop; default: @@ -666,6 +664,10 @@ public class SslHandler extends FrameDecoder { } private void setHandshakeSuccess(Channel channel) { + if (!handshaking) { + return; + } + synchronized (handshakeLock) { handshaking = false; handshaken = true; @@ -674,6 +676,7 @@ public class SslHandler extends FrameDecoder { handshakeFuture = newHandshakeFuture(channel); } } + handshakeFuture.setSuccess(); }