From d82d16e28d21097c4a61f685212db6e947dbdfbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Thu, 9 Jun 2022 20:26:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=86=85=E5=AE=B9=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E6=97=B6=E6=97=A0=E6=B3=95=E7=BC=93=E5=AD=98=E7=9A=84?= =?UTF-8?q?Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/nodes/http_request_reverse_proxy.go | 5 +++++ internal/nodes/http_writer.go | 2 +- internal/utils/readers/reader_closer_tee.go | 4 +++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/internal/nodes/http_request_reverse_proxy.go b/internal/nodes/http_request_reverse_proxy.go index 7984cd9..393e78d 100644 --- a/internal/nodes/http_request_reverse_proxy.go +++ b/internal/nodes/http_request_reverse_proxy.go @@ -328,7 +328,12 @@ func (this *HTTPRequest) doReverseProxy() { // 是否有内容 if resp.ContentLength == 0 && len(resp.TransferEncoding) == 0 { + // 即使内容为0,也需要读取一次,以便于触发相关事件 + var buf = utils.BytePool4k.Get() + _, _ = io.CopyBuffer(this.writer, resp.Body, buf) + utils.BytePool4k.Put(buf) _ = resp.Body.Close() + this.writer.SetOk() return } diff --git a/internal/nodes/http_writer.go b/internal/nodes/http_writer.go index a7d3bb1..1d0b72d 100644 --- a/internal/nodes/http_writer.go +++ b/internal/nodes/http_writer.go @@ -836,7 +836,7 @@ func (this *HTTPWriter) HeaderData() []byte { return nil } - resp := &http.Response{} + var resp = &http.Response{} resp.Header = this.Header() if this.statusCode == 0 { this.statusCode = http.StatusOK diff --git a/internal/utils/readers/reader_closer_tee.go b/internal/utils/readers/reader_closer_tee.go index 87e529c..4fa4af5 100644 --- a/internal/utils/readers/reader_closer_tee.go +++ b/internal/utils/readers/reader_closer_tee.go @@ -2,7 +2,9 @@ package readers -import "io" +import ( + "io" +) type TeeReaderCloser struct { r io.Reader