diff options
author | Sergio VS <savsgio.engineer@gmail.com> | 2022-01-18 12:45:41 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-18 12:45:41 +0100 |
commit | 2aca3e82637860c90b8a3a2454ae8325706c1fd4 (patch) | |
tree | 1a853df6db916703df6578d0aaa49957f1c37f01 /server.go | |
parent | Updated dependencies (#1194) (diff) | |
download | fasthttp-2aca3e82637860c90b8a3a2454ae8325706c1fd4.tar.gz fasthttp-2aca3e82637860c90b8a3a2454ae8325706c1fd4.tar.bz2 fasthttp-2aca3e82637860c90b8a3a2454ae8325706c1fd4.zip |
fix(hijack): reset userValues after hijack handler execution (#1199)
* fix(hijack): reset userValues after hijack handler execution
* feat: add test
* fix: typo
* fix(test): race condition
Diffstat (limited to 'server.go')
-rw-r--r-- | server.go | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -2375,6 +2375,7 @@ func (s *Server) serveConn(c net.Conn) (err error) { if hijackHandler != nil { var hjr io.Reader = c + hctx := ctx if br != nil { hjr = br br = nil @@ -2394,7 +2395,7 @@ func (s *Server) serveConn(c net.Conn) (err error) { if err != nil { break } - go hijackConnHandler(hjr, c, s, hijackHandler) + go hijackConnHandler(hctx, hjr, c, s, hijackHandler) err = errHijacked break } @@ -2446,7 +2447,7 @@ func (s *Server) setState(nc net.Conn, state ConnState) { } } -func hijackConnHandler(r io.Reader, c net.Conn, s *Server, h HijackHandler) { +func hijackConnHandler(ctx *RequestCtx, r io.Reader, c net.Conn, s *Server, h HijackHandler) { hjc := s.acquireHijackConn(r, c) h(hjc) @@ -2457,6 +2458,7 @@ func hijackConnHandler(r io.Reader, c net.Conn, s *Server, h HijackHandler) { c.Close() s.releaseHijackConn(hjc) } + ctx.ResetUserValues() } func (s *Server) acquireHijackConn(r io.Reader, c net.Conn) *hijackConn { |