Use new DetectEngineReload() function. It's called from the main loop
instead of it being spawned into it's own temporary thread. This greatly
simplifies the signal handling.
An added advantage is that this seems to improve the memory usage.
Related to bug #1358
volatile sig_atomic_t sigint_count = 0;
volatile sig_atomic_t sighup_count = 0;
volatile sig_atomic_t sigterm_count = 0;
+volatile sig_atomic_t sigusr2_count = 0;
/*
* Flag to indicate if the engine is at the initialization
void SignalHandlerSigusr2(int sig)
{
+#if 0
if (run_mode == RUNMODE_UNKNOWN || run_mode == RUNMODE_UNITTEST) {
SCLogInfo("Ruleset load signal USR2 triggered for wrong runmode");
return;
DetectEngineSpawnLiveRuleSwapMgmtThread();
return;
+#endif
+ sigusr2_count = 1;
}
/**
OutputNotifyFileRotation();
sighup_count--;
}
+ if (sigusr2_count > 0) {
+ DetectEngineReload();
+ sigusr2_count--;
+ }
usleep(10* 1000);
}