From cd7c1dafbc8e04e779e011bf06ee28e730780098 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Fri, 21 Oct 2016 15:39:05 +0300 Subject: [PATCH] Properly handle TimeoutHandler in custom server implementations, which use RequestCtx.Init* functions --- server.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/server.go b/server.go index a114a26..d009cd8 100644 --- a/server.go +++ b/server.go @@ -1858,7 +1858,7 @@ func (ctx *RequestCtx) Init2(conn net.Conn, logger Logger, reduceMemoryUsage boo ctx.c = conn ctx.logger.logger = logger ctx.connID = nextConnID() - ctx.s = &fakeServer + ctx.s = fakeServer ctx.connRequestNum = 0 ctx.connTime = time.Now() ctx.time = ctx.connTime @@ -1888,7 +1888,10 @@ func (ctx *RequestCtx) Init(req *Request, remoteAddr net.Addr, logger Logger) { req.CopyTo(&ctx.Request) } -var fakeServer Server +var fakeServer = &Server{ + // Initialize concurrencyCh for TimeoutHandler + concurrencyCh: make(chan struct{}, DefaultConcurrency), +} type fakeAddrer struct { net.Conn