From 0736a3bc35915ca3b9ae4a0f6362ced20d628ae0 Mon Sep 17 00:00:00 2001 From: Scott Mitchell Date: Fri, 28 Aug 2015 16:29:47 -0700 Subject: [PATCH] HTTP/2 SimplePromiseAggregator tryFailure not consistent with setFailure Motivation: The SimplePromiseAggregator.setFailure allows a failure to occur before newPromise is called, but tryFailure doesn't. These methods should be consistent. Modifications: - tryFailure should use the same logic as setFailure Result: Consistent failure routines. --- .../java/io/netty/handler/codec/http2/Http2CodecUtil.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2CodecUtil.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2CodecUtil.java index 51f1518a53..1567d2a2d3 100644 --- a/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2CodecUtil.java +++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2CodecUtil.java @@ -240,7 +240,7 @@ public final class Http2CodecUtil { @Override public boolean tryFailure(Throwable cause) { - if (awaitingPromises()) { + if (allowFailure()) { ++failureCount; if (failureCount == 1) { promise.tryFailure(cause); @@ -261,7 +261,7 @@ public final class Http2CodecUtil { */ @Override public ChannelPromise setFailure(Throwable cause) { - if (awaitingPromises() || expectedCount == 0) { + if (allowFailure()) { ++failureCount; if (failureCount == 1) { promise.setFailure(cause); @@ -271,6 +271,10 @@ public final class Http2CodecUtil { return this; } + private boolean allowFailure() { + return awaitingPromises() || expectedCount == 0; + } + private boolean awaitingPromises() { return successfulCount + failureCount < expectedCount; }