diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2021-08-18 19:54:09 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-18 19:54:09 -0400 |
commit | 7a0d94837a15a195f33e82d18a4d8f7d8e65e0f5 (patch) | |
tree | 949fb239c802607ffbf030846cfe54fa257b574c | |
parent | 2f9bd63c9d2c0e18db7d35e0a1ea08624d21c3a2 (diff) | |
parent | 2d0a0c0d297f82891faee9e3a1a286d6f20fbdd2 (diff) | |
download | podman-7a0d94837a15a195f33e82d18a4d8f7d8e65e0f5.tar.gz podman-7a0d94837a15a195f33e82d18a4d8f7d8e65e0f5.tar.bz2 podman-7a0d94837a15a195f33e82d18a4d8f7d8e65e0f5.zip |
Merge pull request #11269 from Luap99/rootlessport-flake
fix rootlessport flake
-rw-r--r-- | pkg/rootlessport/rootlessport_linux.go | 35 |
1 files changed, 9 insertions, 26 deletions
diff --git a/pkg/rootlessport/rootlessport_linux.go b/pkg/rootlessport/rootlessport_linux.go index ede216bfe..9a2f93f8e 100644 --- a/pkg/rootlessport/rootlessport_linux.go +++ b/pkg/rootlessport/rootlessport_linux.go @@ -20,7 +20,6 @@ import ( "net" "os" "os/exec" - "os/signal" "path/filepath" "github.com/containernetworking/plugins/pkg/ns" @@ -106,30 +105,6 @@ func parent() error { return err } - exitC := make(chan os.Signal, 1) - defer close(exitC) - - go func() { - sigC := make(chan os.Signal, 1) - signal.Notify(sigC, unix.SIGPIPE) - defer func() { - signal.Stop(sigC) - close(sigC) - }() - - select { - case s := <-sigC: - if s == unix.SIGPIPE { - if f, err := os.OpenFile("/dev/null", os.O_WRONLY, 0755); err == nil { - unix.Dup2(int(f.Fd()), 1) // nolint:errcheck - unix.Dup2(int(f.Fd()), 2) // nolint:errcheck - f.Close() - } - } - case <-exitC: - } - }() - socketDir := filepath.Join(cfg.TmpDir, "rp") err = os.MkdirAll(socketDir, 0700) if err != nil { @@ -251,8 +226,16 @@ outer: go serve(socket, driver) } - // write and close ReadyFD (convention is same as slirp4netns --ready-fd) logrus.Info("ready") + + // https://github.com/containers/podman/issues/11248 + // Copy /dev/null to stdout and stderr to prevent SIGPIPE errors + if f, err := os.OpenFile("/dev/null", os.O_WRONLY, 0755); err == nil { + unix.Dup2(int(f.Fd()), 1) // nolint:errcheck + unix.Dup2(int(f.Fd()), 2) // nolint:errcheck + f.Close() + } + // write and close ReadyFD (convention is same as slirp4netns --ready-fd) if _, err := readyW.Write([]byte("1")); err != nil { return err } |