From: Victor Julien Date: Mon, 19 Jan 2015 21:09:59 +0000 (+0100) Subject: detect: move reload into main loop X-Git-Tag: suricata-2.1beta4~126 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0c263105cd1e8799150df6fbfc4de34b520d9f52;p=thirdparty%2Fsuricata.git 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 --- 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); }