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.
This commit is contained in:
Todd C. Miller
2011-12-08 11:15:53 -05:00
parent edd32aa8df
commit 6bcf470fe9

View File

@@ -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.