From b449d567450e651710bb0f17f8557292dc89a274 Mon Sep 17 00:00:00 2001 From: John Date: Fri, 4 May 2018 16:07:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9Bghttp.Server=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E9=94=99=E8=AF=AF=E7=8A=B6=E6=80=81=E7=A0=81?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- g/net/ghttp/http_response.go | 13 +++++++++++-- g/net/ghttp/http_server_handler.go | 5 ----- geg/net/ghttp/status.go | 1 - 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/g/net/ghttp/http_response.go b/g/net/ghttp/http_response.go index 933e53b97..ecc7c0790 100644 --- a/g/net/ghttp/http_response.go +++ b/g/net/ghttp/http_response.go @@ -136,6 +136,14 @@ func (r *Response) SetAllowCrossDomainRequest(allowOrigin string, allowMethods s // 返回HTTP Code状态码 func (r *Response) WriteStatus(status int, content...string) { if len(r.buffer) == 0 { + // 状态码注册回调函数处理 + if status != http.StatusOK { + if f := r.request.Server.getStatusHandler(status, r.request); f != nil { + f(r.request) + r.WriteHeader(status) + return + } + } r.Header().Set("Content-Type", "text/plain; charset=utf-8") r.Header().Set("X-Content-Type-Options", "nosniff") if len(content) > 0 { @@ -183,10 +191,11 @@ func (r *Response) ClearBuffer() { // 输出缓冲区数据到客户端 func (r *Response) OutputBuffer() { - r.mu.Lock() if len(r.buffer) > 0 { + r.mu.Lock() r.ResponseWriter.Write(r.buffer) r.buffer = make([]byte, 0) + r.mu.Unlock() } - r.mu.Unlock() + } diff --git a/g/net/ghttp/http_server_handler.go b/g/net/ghttp/http_server_handler.go index fb13f5bc3..9550fc9cb 100644 --- a/g/net/ghttp/http_server_handler.go +++ b/g/net/ghttp/http_server_handler.go @@ -59,11 +59,6 @@ func (s *Server)handleRequest(w http.ResponseWriter, r *http.Request) { // 事件 - AfterServe s.callHookHandler(request, "AfterServe") - // 状态码注册回调函数处理 - if f := request.Server.getStatusHandler(request.Response.Status, request); f != nil { - f(request) - } - // 设置请求完成时间 request.LeaveTime = gtime.Microsecond() diff --git a/geg/net/ghttp/status.go b/geg/net/ghttp/status.go index 0e823056c..c68cafc66 100644 --- a/geg/net/ghttp/status.go +++ b/geg/net/ghttp/status.go @@ -12,7 +12,6 @@ func main() { r.Response.WriteStatus(404) }) s.BindStatusHandler(404, func(r *ghttp.Request){ - r.Response.ClearBuffer() r.Response.Writeln("This is customized 404 page") }) s.SetPort(8199)