From df43379ce3e7a2b36c8634ac013a6af3e16db57e Mon Sep 17 00:00:00 2001 From: jrhee17 Date: Thu, 4 Nov 2021 23:49:43 +0900 Subject: [PATCH] don't process headers/data/rst if res is closed --- .../com/linecorp/armeria/client/Http2ResponseDecoder.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/com/linecorp/armeria/client/Http2ResponseDecoder.java b/core/src/main/java/com/linecorp/armeria/client/Http2ResponseDecoder.java index 776d5de13ca..be166592ff6 100644 --- a/core/src/main/java/com/linecorp/armeria/client/Http2ResponseDecoder.java +++ b/core/src/main/java/com/linecorp/armeria/client/Http2ResponseDecoder.java @@ -185,7 +185,7 @@ public void onHeadersRead(ChannelHandlerContext ctx, int streamId, Http2Headers boolean endOfStream) throws Http2Exception { keepAliveChannelRead(); final HttpResponseWrapper res = getResponse(streamIdToId(streamId), endOfStream); - if (res == null) { + if (res == null || !res.isOpen()) { if (conn.streamMayHaveExisted(streamId)) { if (logger.isDebugEnabled()) { logger.debug("{} Received a late HEADERS frame for a closed stream: {}", @@ -234,7 +234,7 @@ public int onDataRead( final int dataLength = data.readableBytes(); final HttpResponseWrapper res = getResponse(streamIdToId(streamId), endOfStream); - if (res == null) { + if (res == null || !res.isOpen()) { if (conn.streamMayHaveExisted(streamId)) { if (logger.isDebugEnabled()) { logger.debug("{} Received a late DATA frame for a closed stream: {}", @@ -295,7 +295,7 @@ private boolean shouldSendGoAway() { public void onRstStreamRead(ChannelHandlerContext ctx, int streamId, long errorCode) throws Http2Exception { keepAliveChannelRead(); final HttpResponseWrapper res = removeResponse(streamIdToId(streamId)); - if (res == null) { + if (res == null || !res.isOpen()) { if (conn.streamMayHaveExisted(streamId)) { if (logger.isDebugEnabled()) { logger.debug("{} Received a late RST_STREAM frame for a closed stream: {}",