diff --git a/cmd/gluetun/main.go b/cmd/gluetun/main.go index b8b3579e..ce7b3ee5 100644 --- a/cmd/gluetun/main.go +++ b/cmd/gluetun/main.go @@ -108,24 +108,24 @@ func main() { } //nolint:gocognit,gocyclo -func _main(background context.Context, buildInfo models.BuildInformation, +func _main(ctx context.Context, buildInfo models.BuildInformation, args []string, logger logging.Logger, os os.OS, osUser user.OSUser, unix unix.Unix, cli cli.CLI) error { if len(args) > 1 { // cli operation switch args[1] { case "healthcheck": - return cli.HealthCheck(background) + return cli.HealthCheck(ctx) case "clientkey": return cli.ClientKey(args[2:], os.OpenFile) case "openvpnconfig": return cli.OpenvpnConfig(os) case "update": - return cli.Update(args[2:], os) + return cli.Update(ctx, args[2:], os) default: return fmt.Errorf("command %q is unknown", args[1]) } } - ctx, cancel := context.WithCancel(background) + ctx, cancel := context.WithCancel(ctx) defer cancel() const clientTimeout = 15 * time.Second diff --git a/internal/cli/cli.go b/internal/cli/cli.go index c2604904..26edc04b 100644 --- a/internal/cli/cli.go +++ b/internal/cli/cli.go @@ -10,7 +10,7 @@ type CLI interface { ClientKey(args []string, openFile os.OpenFileFunc) error HealthCheck(ctx context.Context) error OpenvpnConfig(os os.OS) error - Update(args []string, os os.OS) error + Update(ctx context.Context, args []string, os os.OS) error } type cli struct{} diff --git a/internal/cli/update.go b/internal/cli/update.go index f957c5cf..611c7305 100644 --- a/internal/cli/update.go +++ b/internal/cli/update.go @@ -15,7 +15,7 @@ import ( "github.com/qdm12/golibs/os" ) -func (c *cli) Update(args []string, os os.OS) error { +func (c *cli) Update(ctx context.Context, args []string, os os.OS) error { options := settings.Updater{CLI: true} var flushToFile bool flagSet := flag.NewFlagSet("update", flag.ExitOnError) @@ -41,7 +41,7 @@ func (c *cli) Update(args []string, os os.OS) error { if !flushToFile && !options.Stdout { return fmt.Errorf("at least one of -file or -stdout must be specified") } - ctx := context.Background() + const clientTimeout = 10 * time.Second httpClient := &http.Client{Timeout: clientTimeout} storage := storage.New(logger, os, constants.ServersData)