From 398071a2720a21f52e8c9cfb59f7689f3dabc7c1 Mon Sep 17 00:00:00 2001 From: redkale Date: Mon, 7 Aug 2023 18:45:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DHttpRequest.readHeader?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/redkale/net/http/HttpRequest.java | 18 +++++++++++------- .../org/redkale/net/http/HttpResponse.java | 1 + 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/redkale/net/http/HttpRequest.java b/src/main/java/org/redkale/net/http/HttpRequest.java index bf331376d..18bc0932e 100644 --- a/src/main/java/org/redkale/net/http/HttpRequest.java +++ b/src/main/java/org/redkale/net/http/HttpRequest.java @@ -341,6 +341,7 @@ public class HttpRequest extends Request { } else if (context.lazyHeaders && getmethod) { //非GET必须要读header,会有Content-Length int rs = loadHeaderBytes(buffer); if (rs != 0) { + buffer.clear(); return rs; } this.headerParsed = false; @@ -349,6 +350,7 @@ public class HttpRequest extends Request { int rs = readHeaderLines(buffer, bytes); if (rs != 0) { this.headerHalfLen = bytes.length(); + buffer.clear(); return rs; } this.headerParsed = true; @@ -356,14 +358,14 @@ public class HttpRequest extends Request { this.headerHalfLen = this.headerLength; } bytes.clear(); + if (this.contentType != null && this.contentType.contains("boundary=")) { + this.boundary = true; + } + if (this.boundary) { + this.keepAlive = false; //文件上传必须设置keepAlive为false,因为文件过大时用户不一定会skip掉多余的数据 + } this.readState = READ_STATE_BODY; } - if (this.contentType != null && this.contentType.contains("boundary=")) { - this.boundary = true; - } - if (this.boundary) { - this.keepAlive = false; //文件上传必须设置keepAlive为false,因为文件过大时用户不一定会skip掉多余的数据 - } if (this.readState == READ_STATE_BODY) { if (this.contentLength > 0 && (this.contentType == null || !this.boundary)) { if (this.contentLength > context.getMaxBody()) { @@ -376,6 +378,8 @@ public class HttpRequest extends Request { if (bytes.isEmpty()) { this.bodyParsed = true; //no body data } + } else { + buffer.clear(); } return lr > 0 ? lr : 0; } @@ -647,7 +651,7 @@ public class HttpRequest extends Request { } break; } - bytes.putWithoutCheck(b); + bytes.put(b); } size = bytes.length(); byte[] content = bytes.content(); diff --git a/src/main/java/org/redkale/net/http/HttpResponse.java b/src/main/java/org/redkale/net/http/HttpResponse.java index f286cd97a..3bb539e53 100644 --- a/src/main/java/org/redkale/net/http/HttpResponse.java +++ b/src/main/java/org/redkale/net/http/HttpResponse.java @@ -946,6 +946,7 @@ public class HttpResponse extends Response { @Override protected void error(Throwable t) { + refuseAlive(); finish500(); }