[#3364] Not use VoidChannelPromise in SslHandler to guard against IllegalStateException
Motivation: SslHandler adds a pending write with an empty buffer and a VoidChannelPromise when a user flush and not pending writes are currently stored. This may produce an IllegalStateException later if the user try to add a ChannelFutureListener to the promise in the next ChannelOutboundHandler. Modifications: Replace ctx.voidPromise() with ctx.newPromise() Result: No more IllegalStateException possible
This commit is contained in:
parent
e8b1f033fb
commit
a7629dd21a
@ -414,7 +414,11 @@ public class SslHandler extends ByteToMessageDecoder {
|
||||
return;
|
||||
}
|
||||
if (pendingUnencryptedWrites.isEmpty()) {
|
||||
pendingUnencryptedWrites.add(Unpooled.EMPTY_BUFFER, ctx.voidPromise());
|
||||
// It's important to NOT use a voidPromise here as the user
|
||||
// may want to add a ChannelFutureListener to the ChannelPromise later.
|
||||
//
|
||||
// See https://github.com/netty/netty/issues/3364
|
||||
pendingUnencryptedWrites.add(Unpooled.EMPTY_BUFFER, ctx.newPromise());
|
||||
}
|
||||
if (!handshakePromise.isDone()) {
|
||||
flushedBeforeHandshake = true;
|
||||
|
Loading…
Reference in New Issue
Block a user