From 6bcf470fe97fd6ec920f18e138edcf64218a960c Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Thu, 8 Dec 2011 11:15:53 -0500 Subject: [PATCH] Catch common signals in the monitor process so they get passed to the command. Fixes a problem when the entire login session is killed when ssh is disconnected or the terminal window is closed. Previously, the monitor would exit and plugin's close method would not be called. --- src/exec_pty.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/exec_pty.c b/src/exec_pty.c index f8e59caa2..29ad9775e 100644 --- a/src/exec_pty.c +++ b/src/exec_pty.c @@ -888,6 +888,17 @@ exec_monitor(struct command_details *details, int backchannel) sa.sa_handler = handler; sigaction(SIGCHLD, &sa, NULL); + /* Catch common signals so we can cleanup properly. */ + sa.sa_flags = SA_RESTART; + sa.sa_handler = handler; + sigaction(SIGHUP, &sa, NULL); + sigaction(SIGINT, &sa, NULL); + sigaction(SIGQUIT, &sa, NULL); + sigaction(SIGTERM, &sa, NULL); + sigaction(SIGTSTP, &sa, NULL); + sigaction(SIGUSR1, &sa, NULL); + sigaction(SIGUSR2, &sa, NULL); + /* * Start a new session with the parent as the session leader * and the slave pty as the controlling terminal. -- 2.50.1