summaryrefslogtreecommitdiff
path: root/pkg/systemd/activation.go
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2020-04-20 10:42:00 -0400
committerGitHub <noreply@github.com>2020-04-20 10:42:00 -0400
commite5e625b2a6481dd49d1d6303df1157c8a51dd7c2 (patch)
treeaf3212ad2ddcf805ff2f38a9e63d06e6c7472137 /pkg/systemd/activation.go
parentbd711358525b09ebc4cb49094a674700b87f7ec0 (diff)
parent4e0326241b35d2549fdba5666f343c31279e18e4 (diff)
downloadpodman-e5e625b2a6481dd49d1d6303df1157c8a51dd7c2.tar.gz
podman-e5e625b2a6481dd49d1d6303df1157c8a51dd7c2.tar.bz2
podman-e5e625b2a6481dd49d1d6303df1157c8a51dd7c2.zip
Merge pull request #5872 from jwhonce/wip/options
V2 Fix support for tcp://[::]<port> connections
Diffstat (limited to 'pkg/systemd/activation.go')
-rw-r--r--pkg/systemd/activation.go29
1 files changed, 12 insertions, 17 deletions
diff --git a/pkg/systemd/activation.go b/pkg/systemd/activation.go
index c8b2389dc..8f75f9cca 100644
--- a/pkg/systemd/activation.go
+++ b/pkg/systemd/activation.go
@@ -3,38 +3,33 @@ package systemd
import (
"os"
"strconv"
- "strings"
)
// SocketActivated determine if podman is running under the socket activation protocol
+// Criteria is based on the expectations of "github.com/coreos/go-systemd/v22/activation"
func SocketActivated() bool {
- pid, pid_found := os.LookupEnv("LISTEN_PID")
- fds, fds_found := os.LookupEnv("LISTEN_FDS")
- fdnames, fdnames_found := os.LookupEnv("LISTEN_FDNAMES")
-
- if !(pid_found && fds_found && fdnames_found) {
+ pid, found := os.LookupEnv("LISTEN_PID")
+ if !found {
return false
}
-
p, err := strconv.Atoi(pid)
if err != nil || p != os.Getpid() {
return false
}
+ fds, found := os.LookupEnv("LISTEN_FDS")
+ if !found {
+ return false
+ }
nfds, err := strconv.Atoi(fds)
- if err != nil || nfds < 1 {
+ if err != nil || nfds == 0 {
return false
}
- // First available file descriptor is always 3.
- if nfds > 1 {
- names := strings.Split(fdnames, ":")
- for _, n := range names {
- if strings.Contains(n, "podman") {
- return true
- }
- }
+ // "github.com/coreos/go-systemd/v22/activation" will use and validate this variable's
+ // value. We're just providing a fast fail
+ if _, found = os.LookupEnv("LISTEN_FDNAMES"); !found {
+ return false
}
-
return true
}