From 9b4e42affab59855632cdd7b1dcacca8a0ce83dd Mon Sep 17 00:00:00 2001 From: Jille Timmermans Date: Sat, 2 Dec 2023 18:04:12 +0100 Subject: bug: Flush the write buffer before putting it to the pool (#1672) A few lines later we check if `s.ReduceMemoryUsage && hijackHandler == nil` and call releaseWriter. We need to flush the buffer before returning it to the pool to avoid the data getting lost. --- server.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server.go b/server.go index c981eb4..eaafe1c 100644 --- a/server.go +++ b/server.go @@ -2415,7 +2415,7 @@ func (s *Server) serveConn(c net.Conn) (err error) { // This benchmark will send 16 pipelined requests. It is faster to pack as many responses // in a TCP packet and send it back at once than waiting for a flush every request. // In real world circumstances this behaviour could be argued as being wrong. - if br == nil || br.Buffered() == 0 || connectionClose { + if br == nil || br.Buffered() == 0 || connectionClose || (s.ReduceMemoryUsage && hijackHandler == nil) { err = bw.Flush() if err != nil { break -- cgit v1.2.3