Procházet zdrojové kódy

BSignal: Also catch SIGHUP.

This allows NCD to clean up orderly if the terminal it was running in is closed.
Ambroz Bizjak před 9 roky
rodič
revize
3897cdf4aa
3 změnil soubory, kde provedl 5 přidání a 3 odebrání
  1. 1 1
      ncd/ncd.h
  2. 2 1
      system/BSignal.c
  3. 2 1
      system/BSignal.h

+ 1 - 1
ncd/ncd.h

@@ -33,7 +33,7 @@
 // how long to wait after an error before retrying
 #define DEFAULT_RETRY_TIME 5000
 
-// default exit code when terminated by SIGINT/SIGTERM
+// default exit code when terminated by SIGINT/SIGTERM/SIGHUP
 #define DEFAULT_SIGNAL_EXIT_CODE 1
 
 // default loglevel

+ 2 - 1
system/BSignal.c

@@ -94,7 +94,7 @@ static BOOL WINAPI ctrl_handler (DWORD type)
 
 static void unix_signal_handler (void *user, int signo)
 {
-    ASSERT(signo == SIGTERM || signo == SIGINT)
+    ASSERT(signo == SIGTERM || signo == SIGINT || signo == SIGHUP)
     ASSERT(bsignal_global.initialized)
     ASSERT(!bsignal_global.finished)
     
@@ -141,6 +141,7 @@ int BSignal_Init (BReactor *reactor, BSignal_handler handler, void *user)
     ASSERT_FORCE(sigemptyset(&sset) == 0)
     ASSERT_FORCE(sigaddset(&sset, SIGTERM) == 0)
     ASSERT_FORCE(sigaddset(&sset, SIGINT) == 0)
+    ASSERT_FORCE(sigaddset(&sset, SIGHUP) == 0)
     
     // init BUnixSignal
     if (!BUnixSignal_Init(&bsignal_global.signal, bsignal_global.reactor, sset, unix_signal_handler, NULL)) {

+ 2 - 1
system/BSignal.h

@@ -45,7 +45,8 @@ typedef void (*BSignal_handler) (void *user);
  * {@link BLog_Init} must have been done.
  * 
  * WARNING: make sure this won't interfere with other components:
- *   - on Linux, this uses {@link BUnixSignal} to catch SIGTERM and SIGINT,
+ *   - On Linux, this uses {@link BUnixSignal} to catch SIGTERM, SIGINT
+ *     and SIGHUP.
  *   - on Windows, this sets up a handler with SetConsoleCtrlHandler.
  *
  * @param reactor {@link BReactor} from which the handler will be called