Files
gluetun/internal/httpserver/server.go
Quentin McGaw a6f00f2fb2 chore(lint): upgrade golangci-lint to v1.47.2
- Fix Slowloris attacks on HTTP servers
- Force set default of 5 minutes for pprof read timeout
- Change `ShutdownTimeout` to time.Duration since it cannot be set to 0
2022-08-01 21:09:16 +00:00

40 lines
1.0 KiB
Go

package httpserver
import (
"fmt"
"net/http"
"time"
)
// Server is an HTTP server implementation, which uses
// the HTTP handler provided.
type Server struct {
address string
addressSet chan struct{}
handler http.Handler
logger Logger
readHeaderTimeout time.Duration
readTimeout time.Duration
shutdownTimeout time.Duration
}
// New creates a new HTTP server with the given settings.
// It returns an error if one of the settings is not valid.
func New(settings Settings) (s *Server, err error) {
settings.SetDefaults()
if err = settings.Validate(); err != nil {
return nil, fmt.Errorf("http server settings validation failed: %w", err)
}
return &Server{
address: settings.Address,
addressSet: make(chan struct{}),
handler: settings.Handler,
logger: settings.Logger,
readHeaderTimeout: settings.ReadHeaderTimeout,
readTimeout: settings.ReadTimeout,
shutdownTimeout: settings.ShutdownTimeout,
}, nil
}