Save the registry before exiting on a SIGTERM.
diff --git a/server/select.c b/server/select.c index a51feaa..bbd8d2e 100644 --- a/server/select.c +++ b/server/select.c
@@ -208,6 +208,13 @@ #endif } +/* SIGTERM handler */ +static void sigterm_handler() +{ + close_registry(); + exit(1); +} + /* server main loop */ void select_loop(void) { @@ -219,6 +226,9 @@ sigemptyset( &sigset ); sigaddset( &sigset, SIGCHLD ); sigaddset( &sigset, SIGHUP ); + sigaddset( &sigset, SIGINT ); + sigaddset( &sigset, SIGQUIT ); + sigaddset( &sigset, SIGTERM ); sigprocmask( SIG_BLOCK, &sigset, NULL ); /* set the handlers */ @@ -228,6 +238,10 @@ sigaction( SIGCHLD, &action, NULL ); action.sa_handler = sighup_handler; sigaction( SIGHUP, &action, NULL ); + action.sa_handler = sigterm_handler; + sigaction( SIGINT, &action, NULL ); + sigaction( SIGQUIT, &action, NULL ); + sigaction( SIGTERM, &action, NULL ); while (active_users) {