diff options
author | Doug Rabson <dfr@rabson.org> | 2022-08-26 15:32:52 +0100 |
---|---|---|
committer | Doug Rabson <dfr@rabson.org> | 2022-08-27 08:08:23 +0100 |
commit | 0b3184a5acb68043a6cf44b7c223d84d8badd930 (patch) | |
tree | 6117d3e7af89d6d1ec809e5cc3cd2cea3fdfe1db /pkg/domain/infra/abi/terminal/sigproxy_linux.go | |
parent | b1cbcff5c5f42fbd1cc62167e0021b4c27e25c5a (diff) | |
download | podman-0b3184a5acb68043a6cf44b7c223d84d8badd930.tar.gz podman-0b3184a5acb68043a6cf44b7c223d84d8badd930.tar.bz2 podman-0b3184a5acb68043a6cf44b7c223d84d8badd930.zip |
pkg/domain: Add terminal support for FreeBSD
This just moves the code to files which can be shared with freebsd.
[NO NEW TESTS NEEDED]
Signed-off-by: Doug Rabson <dfr@rabson.org>
Diffstat (limited to 'pkg/domain/infra/abi/terminal/sigproxy_linux.go')
-rw-r--r-- | pkg/domain/infra/abi/terminal/sigproxy_linux.go | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/pkg/domain/infra/abi/terminal/sigproxy_linux.go b/pkg/domain/infra/abi/terminal/sigproxy_linux.go deleted file mode 100644 index 16d345f06..000000000 --- a/pkg/domain/infra/abi/terminal/sigproxy_linux.go +++ /dev/null @@ -1,60 +0,0 @@ -package terminal - -import ( - "errors" - "os" - "syscall" - - "github.com/containers/podman/v4/libpod" - "github.com/containers/podman/v4/libpod/define" - "github.com/containers/podman/v4/libpod/shutdown" - "github.com/containers/podman/v4/pkg/signal" - "github.com/sirupsen/logrus" -) - -// Make sure the signal buffer is sufficiently big. -// runc is using the same value. -const signalBufferSize = 2048 - -// ProxySignals ... -func ProxySignals(ctr *libpod.Container) { - // Stop catching the shutdown signals (SIGINT, SIGTERM) - they're going - // to the container now. - shutdown.Stop() //nolint: errcheck - - sigBuffer := make(chan os.Signal, signalBufferSize) - signal.CatchAll(sigBuffer) - - logrus.Debugf("Enabling signal proxying") - - go func() { - for s := range sigBuffer { - // Ignore SIGCHLD and SIGPIPE - these are mostly likely - // intended for the podman command itself. - // SIGURG was added because of golang 1.14 and its preemptive changes - // causing more signals to "show up". - // https://github.com/containers/podman/issues/5483 - if s == syscall.SIGCHLD || s == syscall.SIGPIPE || s == syscall.SIGURG { - continue - } - - if err := ctr.Kill(uint(s.(syscall.Signal))); err != nil { - if errors.Is(err, define.ErrCtrStateInvalid) { - logrus.Infof("Ceasing signal forwarding to container %s as it has stopped", ctr.ID()) - } else { - logrus.Errorf("forwarding signal %d to container %s: %v", s, ctr.ID(), err) - } - // If the container dies, and we find out here, - // we need to forward that one signal to - // ourselves so that it is not lost, and then - // we terminate the proxy and let the defaults - // play out. - signal.StopCatch(sigBuffer) - if err := syscall.Kill(syscall.Getpid(), s.(syscall.Signal)); err != nil { - logrus.Errorf("Failed to kill pid %d", syscall.Getpid()) - } - return - } - } - }() -} |