]> jfr.im git - irc/quakenet/newserv.git/blobdiff - core/main.c
merge
[irc/quakenet/newserv.git] / core / main.c
index 3a5896f65c6f8f568162c1c962d5cfaea882e7a2..ec6f4abce165d1d9a73949888257c9a97bfe43a4 100644 (file)
@@ -23,7 +23,7 @@ void handlecore(void);
 void handlesignals(void);
 
 int newserv_shutdown_pending;
-static int newserv_sigusr1_pending, newserv_sighup_pending;
+static int newserv_sigint_pending, newserv_sigusr1_pending, newserv_sighup_pending;
 static void (*oldsegv)(int);
 
 int main(int argc, char **argv) {
@@ -62,10 +62,10 @@ int main(int argc, char **argv) {
     handlesignals();
   }  
 
-  nsexit();
-
   freeconfig();
   finisstring();  
+
+  nsexit();
 }
 
 void handlesignals(void) {
@@ -82,6 +82,13 @@ void handlesignals(void) {
     triggerhook(HOOK_CORE_REHASH, (void *)1);
     newserv_sighup_pending=0;
   }
+
+  if (newserv_sigint_pending) {
+    Error("core", ERR_INFO, "SIGINT received, terminating.");
+    triggerhook(HOOK_CORE_SIGINT, NULL);
+    newserv_sigint_pending=0;
+    newserv_shutdown_pending=1;
+  }
 }
 
 /*
@@ -95,7 +102,7 @@ void initseed() {
 }
 
 void siginthandler(int sig) {
-  newserv_shutdown_pending = 1;
+  newserv_sigint_pending = 1;
 }
 
 void sigusr1handler(int sig) {