help wantedpending/development
Métricas do repositório
- Stars
- (21.741 estrelas)
- Métricas de merge de PR
- (Mesclagem média 3d) (44 fundiu PRs em 30d)
Description
The context doesnt become Done() on the timeout.
for example, this code:
func main() {
fasthttp.ListenAndServe(":8080", fasthttp.TimeoutHandler(func(ctx *fasthttp.RequestCtx) {
log.Println("begin")
tm := time.NewTimer(10 * time.Second)
select {
case <-ctx.Done():
log.Println("context cancelled")
return
case <-tm.C:
log.Println("process finished ok")
}
log.Println("end")
}, time.Second*2, "timeout"))
}
prints:
2022/02/16 12:52:56 begin
2022/02/16 12:53:06 process finished ok
2022/02/16 12:53:06 end
The client receives the timeout after 2 seconds, and the handler finishes after 10 seconds yet. It would be nice if the context became Done() in this case. If this would break existing code expectations then it can be made optional (via setting or a new TimeoutHandlerWithShutdown or something like it).
Will you accept a PR for this?