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 4f7f13be20..4e96ba4222 100644 --- a/src/main/java/org/jboss/netty/handler/ssl/SslHandler.java +++ b/src/main/java/org/jboss/netty/handler/ssl/SslHandler.java @@ -402,6 +402,7 @@ public class SslHandler extends FrameDecoder implements ChannelDownstreamHandler ChannelBuffer msg; ByteBuffer outNetBuf = bufferPool.acquire(); boolean success = true; + boolean offered = false; try { loop: for (;;) { @@ -446,6 +447,7 @@ public class SslHandler extends FrameDecoder implements ChannelDownstreamHandler pendingEncryptedWrites.offer(encryptedWrite); } } + offered = true; } else { switch (result.getHandshakeStatus()) { case NEED_WRAP: @@ -479,7 +481,9 @@ public class SslHandler extends FrameDecoder implements ChannelDownstreamHandler } finally { bufferPool.release(outNetBuf); - flushPendingEncryptedWrites(context); + if (offered) { + flushPendingEncryptedWrites(context); + } if (!success) { // Mark all remaining pending writes as failure if anything