diff --git a/transport/src/main/java/io/netty/channel/DefaultChannelHandlerContext.java b/transport/src/main/java/io/netty/channel/DefaultChannelHandlerContext.java index 340cc33b8a..aba2347add 100644 --- a/transport/src/main/java/io/netty/channel/DefaultChannelHandlerContext.java +++ b/transport/src/main/java/io/netty/channel/DefaultChannelHandlerContext.java @@ -812,7 +812,7 @@ final class DefaultChannelHandlerContext extends DefaultAttributeMap implements return new FailedChannelFuture(channel(), executor(), cause); } - private void validatePromise(ChannelPromise promise, boolean allowUnsafe) { + private void validatePromise(ChannelPromise promise, boolean allowVoidPromise) { if (promise == null) { throw new NullPointerException("promise"); } @@ -821,32 +821,24 @@ final class DefaultChannelHandlerContext extends DefaultAttributeMap implements throw new IllegalArgumentException("promise already done: " + promise); } - // check if the promise is of type DefaultChannelPromise and if so check if its validated already. - DefaultChannelPromise p = null; - if (promise instanceof DefaultChannelPromise) { - p = (DefaultChannelPromise) promise; - if (p.isValidated()) { - return; - } - } - if (promise.channel() != channel()) { throw new IllegalArgumentException(String.format( "promise.channel does not match: %s (expected: %s)", promise.channel(), channel())); } - if (!allowUnsafe && promise instanceof VoidChannelPromise) { + + if (promise.getClass() == DefaultChannelPromise.class) { + return; + } + + if (!allowVoidPromise && promise instanceof VoidChannelPromise) { throw new IllegalArgumentException( StringUtil.simpleClassName(VoidChannelPromise.class) + " not allowed for this operation"); } + if (promise instanceof AbstractChannel.CloseFuture) { throw new IllegalArgumentException( StringUtil.simpleClassName(AbstractChannel.CloseFuture.class) + " not allowed in a pipeline"); } - - if (p != null) { - // mark as validated - p.validated(); - } } private DefaultChannelHandlerContext findContextInbound() { diff --git a/transport/src/main/java/io/netty/channel/DefaultChannelPromise.java b/transport/src/main/java/io/netty/channel/DefaultChannelPromise.java index 117f6af64f..3d76347281 100644 --- a/transport/src/main/java/io/netty/channel/DefaultChannelPromise.java +++ b/transport/src/main/java/io/netty/channel/DefaultChannelPromise.java @@ -29,7 +29,6 @@ public class DefaultChannelPromise extends DefaultPromise implements Chann private final Channel channel; private long checkpoint; - private boolean validated; /** * Creates a new instance. @@ -158,12 +157,4 @@ public class DefaultChannelPromise extends DefaultPromise implements Chann super.checkDeadLock(); } } - - final boolean isValidated() { - return validated; - } - - final void validated() { - validated = true; - } }