http-add-on/pkg/http/server.go

33 lines
586 B
Go

package http
import (
"context"
"crypto/tls"
"net/http"
"github.com/kedacore/http-add-on/pkg/util"
)
func ServeContext(ctx context.Context, addr string, hdl http.Handler, tlsConfig *tls.Config) error {
srv := &http.Server{
Handler: hdl,
Addr: addr,
TLSConfig: tlsConfig,
}
go func() {
<-ctx.Done()
if err := srv.Shutdown(context.Background()); err != nil {
logger := util.LoggerFromContext(ctx)
logger.Error(err, "failed shutting down server")
}
}()
if tlsConfig != nil {
return srv.ListenAndServeTLS("", "")
}
return srv.ListenAndServe()
}