From d587e90024f997add0a120bce216f832ee18180c Mon Sep 17 00:00:00 2001 From: tursom <tursom@foxmail.com> Date: Thu, 28 Nov 2019 17:39:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20NettyHttpContent=20?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E4=BB=A3=E7=A0=81=E9=94=99=E8=AF=AF=E7=9A=84?= =?UTF-8?q?=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/netty-web/build.gradle | 2 +- .../src/main/kotlin/cn/tursom/web/netty/NettyHttpContent.kt | 6 ++++++ web/src/main/kotlin/cn/tursom/web/HttpContent.kt | 1 + web/src/main/kotlin/cn/tursom/web/utils/EmptyHttpContent.kt | 1 + 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/web/netty-web/build.gradle b/web/netty-web/build.gradle index fce6d20..727bdb7 100644 --- a/web/netty-web/build.gradle +++ b/web/netty-web/build.gradle @@ -1,5 +1,5 @@ dependencies { implementation project(":") implementation project(":web") - implementation group: "io.netty", name: "netty-all", version: "4.1.33.Final" + implementation group: "io.netty", name: "netty-all", version: "4.1.43.Final" } diff --git a/web/netty-web/src/main/kotlin/cn/tursom/web/netty/NettyHttpContent.kt b/web/netty-web/src/main/kotlin/cn/tursom/web/netty/NettyHttpContent.kt index 1ab6a53..5a5daf1 100644 --- a/web/netty-web/src/main/kotlin/cn/tursom/web/netty/NettyHttpContent.kt +++ b/web/netty-web/src/main/kotlin/cn/tursom/web/netty/NettyHttpContent.kt @@ -18,6 +18,7 @@ open class NettyHttpContent( val ctx: ChannelHandlerContext, val msg: FullHttpRequest ) : AdvanceHttpContent, NettyResponseHeaderAdapter() { + override var finished: Boolean = false override val uri: String by lazy { var uri = msg.uri() while (uri.contains("//")) { @@ -127,6 +128,7 @@ open class NettyHttpContent( } fun finish(response: FullHttpResponse) { + finished = true val heads = response.headers() addHeaders( heads, @@ -159,21 +161,25 @@ open class NettyHttpContent( } override fun finishChunked() { + finished = true val httpChunkWriter = HttpChunkedInput(NettyChunkedByteBuffer(chunkedList)) ctx.writeAndFlush(httpChunkWriter) } override fun finishChunked(chunked: Chunked) { + finished = true val httpChunkWriter = HttpChunkedInput(NettyChunkedInput(chunked)) ctx.writeAndFlush(httpChunkWriter) } override fun finishFile(file: File, chunkSize: Int) { + finished = true writeChunkedHeader() ctx.writeAndFlush(HttpChunkedInput(ChunkedFile(file, chunkSize))) } override fun finishFile(file: RandomAccessFile, offset: Long, length: Long, chunkSize: Int) { + finished = true writeChunkedHeader() ctx.writeAndFlush(HttpChunkedInput(ChunkedFile(file, offset, length, chunkSize))) } diff --git a/web/src/main/kotlin/cn/tursom/web/HttpContent.kt b/web/src/main/kotlin/cn/tursom/web/HttpContent.kt index 83f41f9..7d7d60a 100644 --- a/web/src/main/kotlin/cn/tursom/web/HttpContent.kt +++ b/web/src/main/kotlin/cn/tursom/web/HttpContent.kt @@ -8,6 +8,7 @@ import java.io.RandomAccessFile import java.net.SocketAddress interface HttpContent : ResponseHeaderAdapter, RequestHeaderAdapter { + val finished: Boolean val uri: String var responseCode: Int var responseMessage: String? diff --git a/web/src/main/kotlin/cn/tursom/web/utils/EmptyHttpContent.kt b/web/src/main/kotlin/cn/tursom/web/utils/EmptyHttpContent.kt index 9bde430..5059c8d 100644 --- a/web/src/main/kotlin/cn/tursom/web/utils/EmptyHttpContent.kt +++ b/web/src/main/kotlin/cn/tursom/web/utils/EmptyHttpContent.kt @@ -9,6 +9,7 @@ import java.net.InetSocketAddress import java.net.SocketAddress class EmptyHttpContent( + override val finished: Boolean = true, override val uri: String = "/", override var responseCode: Int = 200, override var responseMessage: String? = null,