diff --git a/internal/third_party/systemd/activation/files_unix.go b/internal/third_party/systemd/activation/files_unix.go index 44d5e539e..a1d9ebddf 100644 --- a/internal/third_party/systemd/activation/files_unix.go +++ b/internal/third_party/systemd/activation/files_unix.go @@ -33,22 +33,11 @@ const ( listenFdsStart = 3 ) -// Files returns a slice containing a `os.File` object for each +// Files returns a slice containing a os.File object for each // file descriptor passed to this process via systemd fd-passing protocol. // // The order of the file descriptors is preserved in the returned slice. -// `unsetEnv` is typically set to `true` in order to avoid clashes in -// fd usage and to avoid leaking environment flags to child processes. -func Files(unsetEnv bool) []*os.File { - if unsetEnv { - defer func() { - // Unsetenv implementation for unix never returns an error. - _ = os.Unsetenv("LISTEN_PID") - _ = os.Unsetenv("LISTEN_FDS") - _ = os.Unsetenv("LISTEN_FDNAMES") - }() - } - +func Files() []*os.File { pid, err := strconv.Atoi(os.Getenv("LISTEN_PID")) if err != nil || pid != os.Getpid() { return nil diff --git a/utils_linux.go b/utils_linux.go index 04785af70..d7f51e202 100644 --- a/utils_linux.go +++ b/utils_linux.go @@ -399,17 +399,11 @@ func startContainer(context *cli.Context, action CtAct, criuOpts *libcontainer.C } } - // Support on-demand socket activation by passing file descriptors into the container init process. - listenFDs := []*os.File{} - if os.Getenv("LISTEN_FDS") != "" { - listenFDs = activation.Files(false) - } - r := &runner{ enableSubreaper: !context.Bool("no-subreaper"), shouldDestroy: !context.Bool("keep"), container: container, - listenFDs: listenFDs, + listenFDs: activation.Files(), // On-demand socket activation. notifySocket: notifySocket, consoleSocket: context.String("console-socket"), pidfdSocket: context.String("pidfd-socket"),