From 0c263105cd1e8799150df6fbfc4de34b520d9f52 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Mon, 19 Jan 2015 22:09:59 +0100 Subject: [PATCH] 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 --- src/suricata.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/suricata.c b/src/suricata.c index 839c08adae..c35fb20fa3 100644 --- a/src/suricata.c +++ b/src/suricata.c @@ -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); }