From c370c885e6ef05154c99600256f8d3019146b08d Mon Sep 17 00:00:00 2001 From: redkale Date: Thu, 12 Sep 2024 08:44:38 +0800 Subject: [PATCH] Response --- src/main/java/org/redkale/net/ProtocolCodec.java | 4 +++- src/main/java/org/redkale/net/Response.java | 5 +++++ src/main/java/org/redkale/net/http/HttpRequest.java | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/redkale/net/ProtocolCodec.java b/src/main/java/org/redkale/net/ProtocolCodec.java index e4986b965..8f8738296 100644 --- a/src/main/java/org/redkale/net/ProtocolCodec.java +++ b/src/main/java/org/redkale/net/ProtocolCodec.java @@ -187,7 +187,9 @@ class ProtocolCodec implements CompletionHandler { } channel.setReadBuffer(buffer.clear()); context.executeDispatch(request, response); - channel.readRegister(this); + if (!response.readRegistered) { + channel.readRegister(this); + } } } else { // rs > 0 channel.setReadBuffer(buffer); diff --git a/src/main/java/org/redkale/net/Response.java b/src/main/java/org/redkale/net/Response.java index c1953342f..c20d79323 100644 --- a/src/main/java/org/redkale/net/Response.java +++ b/src/main/java/org/redkale/net/Response.java @@ -46,6 +46,8 @@ public abstract class Response> { protected boolean inNonBlocking = true; + protected boolean readRegistered; + // 输出的结果对象 protected Object output; @@ -139,6 +141,7 @@ public abstract class Response> { protected void prepare() { inited = true; inNonBlocking = true; + readRegistered = false; request.prepare(); } @@ -348,6 +351,7 @@ public abstract class Response> { this.responseConsumer.accept(this); if (!completed) { conn.readRegister(conn.protocolCodec); + this.readRegistered = true; } } else { Supplier poolSupplier = this.responseSupplier; @@ -356,6 +360,7 @@ public abstract class Response> { new ProtocolCodec(context, poolSupplier, poolConsumer, conn) .response(this) .run(null); + this.readRegistered = true; } } else { this.responseConsumer.accept(this); diff --git a/src/main/java/org/redkale/net/http/HttpRequest.java b/src/main/java/org/redkale/net/http/HttpRequest.java index a3e40fd62..f1fa97574 100644 --- a/src/main/java/org/redkale/net/http/HttpRequest.java +++ b/src/main/java/org/redkale/net/http/HttpRequest.java @@ -416,7 +416,7 @@ public class HttpRequest extends Request { this.keepAlive = false; } // completed=true时ProtocolCodec会继续读下一个request - this.completed = !this.boundary && !maybews && this.headerParsed; + this.completed = !this.boundary && !maybews; this.readState = READ_STATE_BODY; } if (this.readState == READ_STATE_BODY) {