]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
signals: handle INT/TERM signals in the main loop
authorVictor Julien <victor@inliniac.net>
Thu, 24 Mar 2016 09:21:11 +0000 (10:21 +0100)
committerVictor Julien <victor@inliniac.net>
Tue, 29 Mar 2016 07:50:54 +0000 (09:50 +0200)
src/suricata.c

index cbdea55150b550add530fcf452e2c175d090117a..05e5ffde7c5780ab0d04ddfc18ed3b8ee91ee683 100644 (file)
@@ -276,12 +276,10 @@ int RunmodeGetCurrent(void)
 static void SignalHandlerSigint(/*@unused@*/ int sig)
 {
     sigint_count = 1;
-    suricata_ctl_flags |= SURICATA_STOP;
 }
 static void SignalHandlerSigterm(/*@unused@*/ int sig)
 {
     sigterm_count = 1;
-    suricata_ctl_flags |= SURICATA_KILL;
 }
 
 void SignalHandlerSigusr2StartingUp(int sig)
@@ -2442,9 +2440,14 @@ int main(int argc, char **argv)
 
     int engine_retval = EXIT_SUCCESS;
     while(1) {
+        if (sigterm_count) {
+            suricata_ctl_flags |= SURICATA_KILL;
+        } else if (sigint_count) {
+            suricata_ctl_flags |= SURICATA_STOP;
+        }
+
         if (suricata_ctl_flags & (SURICATA_KILL | SURICATA_STOP)) {
             SCLogNotice("Signal Received.  Stopping engine.");
-
             break;
         }