package http import ( "context" "net/http" "github.com/caos/logging" "github.com/caos/zitadel/internal/telemetry/tracing" ) func Serve(ctx context.Context, handler http.Handler, port, servername string) { server := &http.Server{ Handler: handler, } listener := CreateListener(port) go func() { <-ctx.Done() err := server.Shutdown(ctx) logging.LogWithFields("HTTP-m7kBlq", "name", servername).WithField("traceID", tracing.TraceIDFromCtx(ctx)).OnError(err).Warnf("error during graceful shutdown of http server (%s)", servername) }() go func() { err := server.Serve(listener) logging.LogWithFields("HTTP-tBHR60", "name", servername).OnError(err).WithField("traceID", tracing.TraceIDFromCtx(ctx)).Panicf("http serve (%s) failed", servername) }() logging.LogWithFields("HTTP-KHh0Cb", "name", servername, "port", port).WithField("traceID", tracing.TraceIDFromCtx(ctx)).Infof("http server (%s) is listening", servername) } func RegisterHandler(mux *http.ServeMux, prefix string, handler http.Handler) { mux.Handle(prefix+"/", http.StripPrefix(prefix, handler)) }