From 58237ce4bc1d1651b37ac0ffd526445a5c418ad7 Mon Sep 17 00:00:00 2001 From: hengyunabc Date: Wed, 25 Sep 2024 11:06:47 +0800 Subject: [PATCH] fix http ERR_CONTENT_LENGTH_MISMATCH. #2916 --- .../core/shell/term/impl/http/DirectoryBrowser.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/com/taobao/arthas/core/shell/term/impl/http/DirectoryBrowser.java b/core/src/main/java/com/taobao/arthas/core/shell/term/impl/http/DirectoryBrowser.java index 63b68c55027..5ee8564b0f9 100644 --- a/core/src/main/java/com/taobao/arthas/core/shell/term/impl/http/DirectoryBrowser.java +++ b/core/src/main/java/com/taobao/arthas/core/shell/term/impl/http/DirectoryBrowser.java @@ -186,9 +186,15 @@ public static DefaultFullHttpResponse directView(File dir, String path, FullHttp } finally { IOUtils.close(fileInputStream); } - ctx.write(fullResp); - ChannelFuture future = ctx.writeAndFlush(LastHttpContent.EMPTY_LAST_CONTENT); - future.addListener(ChannelFutureListener.CLOSE); + ChannelFuture channelFuture = ctx.writeAndFlush(fullResp); + channelFuture.addListener((ChannelFutureListener) future -> { + if (future.isSuccess()) { + ChannelFuture lastContentFuture = ctx.writeAndFlush(LastHttpContent.EMPTY_LAST_CONTENT); + lastContentFuture.addListener(ChannelFutureListener.CLOSE); + } else { + future.channel().close(); + } + }); return fullResp; } logger.info("file {} size bigger than {}, send by future.",file.getName(), MIN_NETTY_DIRECT_SEND_SIZE);