static void defaultSigHandler (int signum) { int retVal; switch (signum) { case SIGHUP: // user wants us to change the verbosity setting retVal = wvutilsToggleVerbosity (); radMsgLog (PRI_STATUS, "wvcwopd: SIGHUP - toggling log verbosity %s", ((retVal == 0) ? "OFF" : "ON")); radProcessSignalCatch(signum, defaultSigHandler); return; case SIGPIPE: // we have a far end socket disconnection, we'll handle it in the // "read/write" code radProcessSignalCatch(signum, defaultSigHandler); break; case SIGILL: case SIGBUS: case SIGFPE: case SIGSEGV: case SIGXFSZ: case SIGSYS: // unrecoverable radProcessSignalCatch- we must exit right now! radMsgLog (PRI_CATASTROPHIC, "wvcwopd: recv unrecoverable signal %d: aborting!", signum); abort (); case SIGCHLD: wvutilsWaitForChildren(); radProcessSignalCatch(signum, defaultSigHandler); return; default: if (cwopWork.exiting) { radProcessSignalCatch(signum, defaultSigHandler); return; } // Exit here in case the socket transaction is hung statusUpdateMessage("exiting normally"); statusUpdate(STATUS_SHUTDOWN); radMsgLog (PRI_HIGH, "wvcwopd: recv sig %d: exiting now!", signum); radMsgRouterExit (); cwopSysExit (&cwopWork); radProcessExit (); radSystemExit (WVIEW_SYSTEM_ID); exit (0); } return; }
void SSHDefaultSigHandler (int signum) { int retVal; switch (signum) { case SIGHUP: // user wants us to change the verbosity setting retVal = wvutilsToggleVerbosity (); radMsgLog (PRI_STATUS, "wviewsshd: SIGHUP - toggling log verbosity %s", ((retVal == 0) ? "OFF" : "ON")); radProcessSignalCatch(signum, SSHDefaultSigHandler); return; case SIGBUS: case SIGFPE: case SIGSEGV: case SIGXFSZ: case SIGSYS: // unrecoverable radProcessSignalCatch- we must exit right now! radMsgLog (PRI_CATASTROPHIC, "wviewsshd: recv unrecoverable signal %d: aborting!", signum); if (!sshWork.exiting) { radTimerDelete (sshWork.timer); sshSysExit (&sshWork); radProcessExit (); radSystemExit (WVIEW_SYSTEM_ID); } abort (); case SIGCHLD: // it is normal behavior to have children finishing up wvutilsWaitForChildren(); radProcessSignalCatch(signum, SSHDefaultSigHandler); break; default: // we can allow the process to exit normally... if (sshWork.exiting) { radProcessSignalCatch(signum, SSHDefaultSigHandler); return; } radMsgLog (PRI_HIGH, "wviewsshd: recv signal %d: exiting!", signum); sshWork.exiting = TRUE; radProcessSetExitFlag (); radProcessSignalCatch(signum, SSHDefaultSigHandler); break; } return; }
static void defaultSigHandler (int signum) { int retVal; switch (signum) { case SIGHUP: // user wants us to change the verbosity setting retVal = wvutilsToggleVerbosity (); radMsgLog (PRI_STATUS, "wviewd: SIGHUP - toggling log verbosity %s", ((retVal == 0) ? "OFF" : "ON")); radProcessSignalCatch(signum, defaultSigHandler); return; case SIGPIPE: // we have a far end socket disconnection, we'll handle it in the // "read/write" code radProcessSignalCatch(signum, defaultSigHandler); break; case SIGBUS: case SIGFPE: case SIGSEGV: case SIGXFSZ: case SIGSYS: // unrecoverable radProcessSignalCatch- we must exit right now! radMsgLog (PRI_CATASTROPHIC, "wviewd: recv sig %d: shutting down!", signum); abort (); case SIGCHLD: wvutilsWaitForChildren(); radProcessSignalCatch(signum, defaultSigHandler); return; default: // we can allow the process to exit normally... if (wviewdWork.exiting) { radProcessSignalCatch(signum, defaultSigHandler); return; } radMsgLog (PRI_HIGH, "wviewd: recv sig %d: exiting!", signum); wviewdWork.exiting = TRUE; radProcessSetExitFlag (); radProcessSignalCatch(signum, defaultSigHandler); break; } return; }
static void defaultSigHandler (int signum) { int retVal; switch (signum) { case SIGHUP: // user wants us to change the verbosity setting retVal = wvutilsToggleVerbosity (); radMsgLog (PRI_STATUS, "wvpmond: SIGHUP - toggling log verbosity %s", ((retVal == 0) ? "OFF" : "ON")); radProcessSignalCatch(signum, defaultSigHandler); return; case SIGPIPE: // we have a far end socket disconnection, we'll handle it in the // "read/write" code radProcessSignalCatch(signum, defaultSigHandler); break; case SIGILL: case SIGBUS: case SIGFPE: case SIGSEGV: case SIGXFSZ: case SIGSYS: // unrecoverable radProcessSignalCatch- we must exit right now! radMsgLog (PRI_CATASTROPHIC, "wvpmond: recv unrecoverable signal %d: aborting!", signum); abort (); case SIGCHLD: wvutilsWaitForChildren(); radProcessSignalCatch(signum, defaultSigHandler); return; default: if (procmonWork.exiting) { radProcessSignalCatch(signum, defaultSigHandler); return; } procmonWork.exiting = TRUE; radProcessSetExitFlag (); // can we allow the process to exit normally? if (!procmonWork.inMainLoop) { // NO! - we gotta bail here! radMsgLog (PRI_HIGH, "wvpmond: recv signal %d: exiting now!", signum); radMsgRouterExit (); procmonSysExit (&procmonWork); radProcessExit (); radSystemExit (WVIEW_SYSTEM_ID); exit (0); } // we can allow the process to exit normally... radMsgLog (PRI_HIGH, "wvpmond: recv signal %d: exiting!", signum); radProcessSignalCatch(signum, defaultSigHandler); break; } return; }
static void defaultSigHandler (int signum) { int retVal; switch (signum) { case SIGHUP: // user wants us to change the verbosity setting retVal = wvutilsToggleVerbosity (); radMsgLog (PRI_STATUS, "wvalarmd: SIGHUP - toggling log verbosity %s", ((retVal == 0) ? "OFF" : "ON")); radProcessSignalCatch(signum, defaultSigHandler); return; case SIGPIPE: // we have a far end socket disconnection, we'll handle it in the // "read/write" code alarmsWork.sigpipe = TRUE; radProcessSignalCatch(signum, defaultSigHandler); break; case SIGCHLD: wvutilsWaitForChildren(); radProcessSignalCatch(signum, defaultSigHandler); break; case SIGILL: case SIGBUS: case SIGFPE: case SIGSEGV: case SIGXFSZ: case SIGSYS: // unrecoverable radProcessSignalCatch- we must exit right now! radMsgLog (PRI_CATASTROPHIC, "wvalarmd: recv catastrophic signal %d: aborting!", signum); abort (); default: // can we allow the process to exit normally? if (!alarmsWork.inMainLoop) { // NO! - we gotta bail here! statusUpdateMessage("wvalarmd: recv signal exiting now!"); radMsgLog (PRI_HIGH, "wvalarmd: recv signal %d: exiting now!", signum); if (alarmsWork.dataFeedServer) radSocketDestroy (alarmsWork.dataFeedServer); radMsgRouterExit (); alarmsSysExit (&alarmsWork); radProcessExit (); radSystemExit (WVIEW_SYSTEM_ID); exit (1); } // we can allow the process to exit normally... statusUpdateMessage("wvalarmd: recv catastrophic signal exiting gracefully!"); radMsgLog (PRI_HIGH, "wvalarmd: recv signal %d: exiting gracefully!", signum); alarmsWork.exiting = TRUE; radProcessSetExitFlag (); radProcessSignalCatch(signum, defaultSigHandler); break; } return; }