aboutsummaryrefslogtreecommitdiff
path: root/pkg/domain/infra/abi/terminal/sigproxy_linux.go
diff options
context:
space:
mode:
authorDoug Rabson <dfr@rabson.org>2022-08-26 15:32:52 +0100
committerDoug Rabson <dfr@rabson.org>2022-08-27 08:08:23 +0100
commit0b3184a5acb68043a6cf44b7c223d84d8badd930 (patch)
tree6117d3e7af89d6d1ec809e5cc3cd2cea3fdfe1db /pkg/domain/infra/abi/terminal/sigproxy_linux.go
parentb1cbcff5c5f42fbd1cc62167e0021b4c27e25c5a (diff)
downloadpodman-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.go60
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
- }
- }
- }()
-}