From b433ecfcbda586cd6afb80f41ae45082959dfa91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Andr=C3=A9s=20Virviescas=20Santana?= Date: Sat, 22 May 2021 17:23:41 +0200 Subject: [PATCH] Make sure to reset the userValues always and at the exact time (#1027) * Ensure reset userValues always that release RequestCtx * Reset userValues after response write and hijack handler are executed --- server.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server.go b/server.go index 9f92cce..82eeef7 100644 --- a/server.go +++ b/server.go @@ -2237,8 +2237,6 @@ func (s *Server) serveConn(c net.Conn) (err error) { hijackNoResponse = ctx.hijackNoResponse && hijackHandler != nil ctx.hijackNoResponse = false - ctx.userValues.Reset() - if s.MaxRequestsPerConn > 0 && connRequestNum >= uint64(s.MaxRequestsPerConn) { ctx.SetConnectionClose() } @@ -2329,6 +2327,7 @@ func (s *Server) serveConn(c net.Conn) (err error) { } s.setState(c, StateIdle) + ctx.userValues.Reset() if atomic.LoadInt32(&s.stop) == 1 { err = nil @@ -2651,6 +2650,7 @@ func (s *Server) releaseCtx(ctx *RequestCtx) { ctx.c = nil ctx.remoteAddr = nil ctx.fbr.c = nil + ctx.userValues.Reset() s.ctxPool.Put(ctx) }