diff options
author | Kassio Borges <kassioborgesm@gmail.com> | 2023-05-17 18:02:06 +0300 |
---|---|---|
committer | Kassio Borges <kassioborgesm@gmail.com> | 2023-05-17 18:02:06 +0300 |
commit | 89c333a866ceef7d6d970999a13778804d7a45cc (patch) | |
tree | 16d28a55611ed608b9a422f1d0cd19cb2b26d55a | |
parent | f86f076800e10bac97c9d7cde04ba38300a2aa63 (diff) |
Ensure to use configured timeouts in http.Server
-rw-r--r-- | .golangci.yml | 4 | ||||
-rw-r--r-- | app.go | 4 | ||||
-rw-r--r-- | server.go | 14 |
3 files changed, 11 insertions, 11 deletions
diff --git a/.golangci.yml b/.golangci.yml index dd8bf738..b79af490 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -114,10 +114,6 @@ issues: - path: internal/fixture/fixtures\.go linters: - gosec - - path: app.go - text: "G112" - linters: - - gosec # Maximum issues count per one linter. Set to 0 to disable. Default is 50. max-issues-per-linter: 0 @@ -306,7 +306,7 @@ func (a *theApp) Run() error { } func (a *theApp) listen(eg *errgroup.Group, addr string, h http.Handler, errTrackingOpt errortracking.CaptureOption, opts ...option) *http.Server { - server := &http.Server{} + server := newHTTPServer(a) eg.Go(func() error { if err := a.listenAndServe(server, addr, h, opts...); err != nil && !errors.Is(err, http.ErrServerClosed) { errortracking.CaptureErrWithStackTrace(err, errTrackingOpt) @@ -320,7 +320,7 @@ func (a *theApp) listen(eg *errgroup.Group, addr string, h http.Handler, errTrac } func (a *theApp) listenMetrics(eg *errgroup.Group, config cfg.Metrics) *http.Server { - server := &http.Server{} + server := newHTTPServer(a) eg.Go(func() error { l, err := net.Listen("tcp", config.Address) if err != nil { @@ -22,6 +22,15 @@ type listenerConfig struct { limiter *netutil.Limiter } +func newHTTPServer(a *theApp) *http.Server { + return &http.Server{ + ReadTimeout: a.config.Server.ReadTimeout, + ReadHeaderTimeout: a.config.Server.ReadHeaderTimeout, + WriteTimeout: a.config.Server.WriteTimeout, + ErrorLog: stdlog.New(logrus.StandardLogger().Writer(), "", 0), + } +} + func (a *theApp) listenAndServe(server *http.Server, addr string, h http.Handler, opts ...option) error { config := &listenerConfig{} @@ -33,17 +42,12 @@ func (a *theApp) listenAndServe(server *http.Server, addr string, h http.Handler server.Handler = h server.TLSConfig = config.tlsConfig - server.ErrorLog = stdlog.New(logrus.StandardLogger().Writer(), "", 0) // ensure http2 is enabled even if TLSConfig is not null // See https://github.com/golang/go/blob/97cee43c93cfccded197cd281f0a5885cdb605b4/src/net/http/server.go#L2947-L2954 if server.TLSConfig != nil { server.TLSConfig.NextProtos = append(server.TLSConfig.NextProtos, "h2") } - server.ReadTimeout = a.config.Server.ReadTimeout - server.ReadHeaderTimeout = a.config.Server.ReadHeaderTimeout - server.WriteTimeout = a.config.Server.WriteTimeout - lc := net.ListenConfig{ KeepAlive: a.config.Server.ListenKeepAlive, } |