diff --git a/abduco.c b/abduco.c index 880a591..2880714 100644 --- a/abduco.c +++ b/abduco.c @@ -251,6 +251,7 @@ static bool create_session(const char *name, char * const argv[]) { break; default: /* SIGTTIN, SIGTTU */ + sa.sa_handler = server_sigterm_handler; sigaction(SIGTERM, &sa, NULL); sigaction(SIGINT, &sa, NULL); sa.sa_handler = SIG_IGN; diff --git a/server.c b/server.c index 4f75c34..d0b30d7 100644 --- a/server.c +++ b/server.c @@ -126,6 +126,10 @@ static void server_pty_died_handler(int sig) { errno = errsv; } +static void server_sigterm_handler(int sig) { + exit(EXIT_FAILURE); /* invoke atexit handler */ +} + static void server_atexit_handler() { unlink(sockaddr.sun_path); }