]> mj.ucw.cz Git - subauth.git/commitdiff
Server: Shut down on SIGTERM
authorMartin Mares <mj@ucw.cz>
Sun, 19 Nov 2017 15:02:01 +0000 (16:02 +0100)
committerMartin Mares <mj@ucw.cz>
Sun, 19 Nov 2017 15:02:01 +0000 (16:02 +0100)
server/subauthd.c

index 4d1110b2e230c04c1260f522f4392b76ea3c0459..a8576123df292cee4c8e2068b5ef7c2fb05a3dcf 100644 (file)
@@ -14,6 +14,7 @@
 
 #include <errno.h>
 #include <fcntl.h>
+#include <signal.h>
 #include <sys/socket.h>
 #include <sys/stat.h>
 #include <sys/un.h>
@@ -292,6 +293,21 @@ static void init_socket(void)
   msg(L_INFO, "Listening on %s", socket_path);
 }
 
+static void sig_term(struct main_signal *ms UNUSED)
+{
+  msg(L_INFO, "Shutting down");
+  main_shut_down();
+}
+
+static void init_signals(void)
+{
+  static struct main_signal ms_sigterm = {
+    .signum = SIGTERM,
+    .handler = sig_term,
+  };
+  signal_add(&ms_sigterm);
+}
+
 static char *zone_commit(void *z_)
 {
   struct auth_zone *z = z_;
@@ -355,6 +371,7 @@ int main(int argc UNUSED, char **argv)
   temp_init();
   main_init();
   init_socket();
+  init_signals();
 
   main_loop();
   return 0;