diff --git a/ocis-pkg/service/debug/option.go b/ocis-pkg/service/debug/option.go index 60029fa274..5f9f593327 100644 --- a/ocis-pkg/service/debug/option.go +++ b/ocis-pkg/service/debug/option.go @@ -1,6 +1,7 @@ package debug import ( + "context" "net/http" "github.com/owncloud/ocis/v2/ocis-pkg/log" @@ -12,6 +13,7 @@ type Option func(o *Options) // Options defines the available options for this package. type Options struct { Logger log.Logger + Context context.Context Name string Version string Address string @@ -45,6 +47,13 @@ func Logger(l log.Logger) Option { } } +// Context provides a function to set the context option. +func Context(ctx context.Context) Option { + return func(o *Options) { + o.Context = ctx + } +} + // Name provides a function to set the name option. func Name(n string) Option { return func(o *Options) { diff --git a/ocis-pkg/service/debug/service.go b/ocis-pkg/service/debug/service.go index 0f806e5748..56e7e882b0 100644 --- a/ocis-pkg/service/debug/service.go +++ b/ocis-pkg/service/debug/service.go @@ -1,6 +1,8 @@ package debug import ( + "context" + "net" "net/http" "net/http/pprof" @@ -46,8 +48,16 @@ func NewService(opts ...Option) *http.Server { mux.Handle("/debug", h) } + baseCtx := dopts.Context + if baseCtx == nil { + baseCtx = context.Background() + } + return &http.Server{ Addr: dopts.Address, + BaseContext: func(_ net.Listener) context.Context { + return baseCtx + }, Handler: alice.New( chimiddleware.RealIP, chimiddleware.RequestID, diff --git a/services/storage-users/pkg/server/debug/server.go b/services/storage-users/pkg/server/debug/server.go index bad45bf058..a5dafc2a01 100644 --- a/services/storage-users/pkg/server/debug/server.go +++ b/services/storage-users/pkg/server/debug/server.go @@ -15,6 +15,7 @@ func Server(opts ...Option) (*http.Server, error) { return debug.NewService( debug.Logger(options.Logger), + debug.Context(options.Context), debug.Name(options.Config.Service.Name), debug.Version(version.GetString()), debug.Address(options.Config.Debug.Addr),