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)
     {