return run_mode;
}
+/** signal handlers
+ *
+ * WARNING: don't use the SCLog* API in the handlers. The API is complex
+ * with memory allocation possibly happening, calls to syslog, json message
+ * construction, etc.
+ */
+
static void SignalHandlerSigint(/*@unused@*/ int sig)
{
sigint_count = 1;
sigterm_count = 1;
}
-void SignalHandlerSigusr2StartingUp(int sig)
-{
- SCLogInfo("Live rule reload only possible after engine completely started.");
-}
-
-void SignalHandlerSigusr2DelayedDetect(int sig)
-{
- SCLogWarning(SC_ERR_LIVE_RULE_SWAP, "Live rule reload blocked while delayed detect is still loading.");
-}
-
-void SignalHandlerSigusr2SigFileStartup(int sig)
-{
- SCLogInfo("Live rule reload not possible if -s or -S option used at runtime.");
-}
-
/**
* SIGUSR2 handler. Just set sigusr2_count. The main loop will act on
* it.
*/
-void SignalHandlerSigusr2(int sig)
+static void SignalHandlerSigusr2(int sig)
{
sigusr2_count = 1;
}
{
/* registering signals we use */
UtilSignalHandlerSetup(SIGINT, SignalHandlerSigint);
+ UtilSignalHandlerSetup(SIGUSR2, SignalHandlerSigusr2);
UtilSignalHandlerSetup(SIGTERM, SignalHandlerSigterm);
UtilSignalHandlerSetup(SIGPIPE, SIG_IGN);
UtilSignalHandlerSetup(SIGSYS, SIG_IGN);
DetectEngineRegisterAppInspectionEngines();
- if (suri->sig_file != NULL)
- UtilSignalHandlerSetup(SIGUSR2, SignalHandlerSigusr2SigFileStartup);
- else
- UtilSignalHandlerSetup(SIGUSR2, SignalHandlerSigusr2StartingUp);
-
StorageFinalize();
TmModuleRunInit();
if (suri.delayed_detect) {
/* force 'reload', this will load the rules and swap engines */
DetectEngineReload(NULL, &suri);
-
- if (suri.sig_file != NULL)
- UtilSignalHandlerSetup(SIGUSR2, SignalHandlerSigusr2SigFileStartup);
- else
- UtilSignalHandlerSetup(SIGUSR2, SignalHandlerSigusr2);
SCLogNotice("Signature(s) loaded, Detect thread(s) activated.");
}
}
if (sigusr2_count > 0) {
- DetectEngineReload(conf_filename, &suri);
+ if (suri.sig_file != NULL) {
+ SCLogWarning(SC_ERR_LIVE_RULE_SWAP, "Live rule reload not "
+ "possible if -s or -S option used at runtime.");
+ } else {
+ DetectEngineReload(conf_filename, &suri);
+ }
sigusr2_count--;
} else if (DetectEngineReloadIsStart()) {
- DetectEngineReload(conf_filename, &suri);
- DetectEngineReloadSetDone();
+ if (suri.sig_file != NULL) {
+ SCLogWarning(SC_ERR_LIVE_RULE_SWAP, "Live rule reload not "
+ "possible if -s or -S option used at runtime.");
+ } else {
+ DetectEngineReload(conf_filename, &suri);
+ DetectEngineReloadSetDone();
+ }
}
usleep(10* 1000);