detect: move reload into main loop

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
pull/1389/head
Victor Julien 10 years ago
parent e7882da178
commit 0c263105cd

@ -195,6 +195,7 @@
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
@ -316,6 +317,7 @@ void SignalHandlerSigusr2Idle(int sig)
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;
@ -331,6 +333,8 @@ void SignalHandlerSigusr2(int sig)
DetectEngineSpawnLiveRuleSwapMgmtThread();
return;
#endif
sigusr2_count = 1;
}
/**
@ -2442,6 +2446,10 @@ int main(int argc, char **argv)
OutputNotifyFileRotation();
sighup_count--;
}
if (sigusr2_count > 0) {
DetectEngineReload();
sigusr2_count--;
}
usleep(10* 1000);
}

Loading…
Cancel
Save