mirror of
https://github.com/coder/coder.git
synced 2025-07-12 00:14:10 +00:00
(possibly temporary) fix for #18519 Matches OpenSSH for non-tty sessions, where we don't actively terminate the process. Adds explicit tracking to the SSH server for these processes so that if we are shutting down we terminate them: this ensures that we can shut down quickly to allow shutdown scripts to run. It also ensures our tests don't leak system resources.
24 lines
646 B
Go
24 lines
646 B
Go
package agentssh
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"syscall"
|
|
|
|
"cdr.dev/slog"
|
|
)
|
|
|
|
func cmdSysProcAttr() *syscall.SysProcAttr {
|
|
return &syscall.SysProcAttr{}
|
|
}
|
|
|
|
func cmdCancel(logger slog.Logger, p *os.Process) error {
|
|
logger.Debug(context.Background(), "cmdCancel: killing process", slog.F("pid", p.Pid))
|
|
// Windows doesn't support sending signals to process groups, so we
|
|
// have to kill the process directly. In the future, we may want to
|
|
// implement a more sophisticated solution for process groups on
|
|
// Windows, but for now, this is a simple way to ensure that the
|
|
// process is terminated when the context is cancelled.
|
|
return p.Kill()
|
|
}
|