Add guards for SIGPIPE and SIGQUIT

In some systems the signals SIGPIPE and SIGQUIT are not available.
This commit is contained in:
Rui Abreu Ferreira
2014-07-09 18:25:56 +01:00
committed by Seth Jackson
parent 6d583f8587
commit 67a7b1785c

View File

@@ -32,9 +32,13 @@ void signal_init(void)
signal_watcher_init(&loop, &shup, NULL); signal_watcher_init(&loop, &shup, NULL);
signal_watcher_init(&loop, &squit, NULL); signal_watcher_init(&loop, &squit, NULL);
signal_watcher_init(&loop, &sterm, NULL); signal_watcher_init(&loop, &sterm, NULL);
#ifdef SIGPIPE
signal_watcher_start(&spipe, on_signal, SIGPIPE); signal_watcher_start(&spipe, on_signal, SIGPIPE);
#endif
signal_watcher_start(&shup, on_signal, SIGHUP); signal_watcher_start(&shup, on_signal, SIGHUP);
#ifdef SIGQUIT
signal_watcher_start(&squit, on_signal, SIGQUIT); signal_watcher_start(&squit, on_signal, SIGQUIT);
#endif
signal_watcher_start(&sterm, on_signal, SIGTERM); signal_watcher_start(&sterm, on_signal, SIGTERM);
#ifdef SIGPWR #ifdef SIGPWR
signal_watcher_init(&loop, &spwr, NULL); signal_watcher_init(&loop, &spwr, NULL);
@@ -82,12 +86,16 @@ static char * signal_name(int signum)
case SIGPWR: case SIGPWR:
return "SIGPWR"; return "SIGPWR";
#endif #endif
#ifdef SIGPIPE
case SIGPIPE: case SIGPIPE:
return "SIGPIPE"; return "SIGPIPE";
#endif
case SIGTERM: case SIGTERM:
return "SIGTERM"; return "SIGTERM";
#ifdef SIGQUIT
case SIGQUIT: case SIGQUIT:
return "SIGQUIT"; return "SIGQUIT";
#endif
case SIGHUP: case SIGHUP:
return "SIGHUP"; return "SIGHUP";
default: default:
@@ -123,11 +131,15 @@ static void on_signal(SignalWatcher *handle, int signum, void *data)
ml_sync_all(false, false); ml_sync_all(false, false);
break; break;
#endif #endif
#ifdef SIGPIPE
case SIGPIPE: case SIGPIPE:
// Ignore // Ignore
break; break;
#endif
case SIGTERM: case SIGTERM:
#ifdef SIGQUIT
case SIGQUIT: case SIGQUIT:
#endif
case SIGHUP: case SIGHUP:
if (!rejecting_deadly) { if (!rejecting_deadly) {
deadly_signal(signum); deadly_signal(signum);