From 2387c9281d847b68f9c6268c1ba5e557e78f906c Mon Sep 17 00:00:00 2001 From: Rainer Gerhards Date: Thu, 14 Nov 2013 15:51:52 +0100 Subject: fix: ruleset queues were activated too early This does not cause issues in v7, but here we have the problem that the total number of actions, which now is required for wti sizing, is not available at that early stage. So we needed to delay queue startup until everything is processed (just as it should have been already!). Note the previously we could have a segfault on first message when ruleset queues were used. --- runtime/ruleset.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'runtime/ruleset.c') diff --git a/runtime/ruleset.c b/runtime/ruleset.c index 2e8d1f0f..e217b3e0 100644 --- a/runtime/ruleset.c +++ b/runtime/ruleset.c @@ -161,6 +161,28 @@ finalize_it: RETiRet; } +/* driver to iterate over all rulesets */ +DEFFUNC_llExecFunc(doActivateRulesetQueues) +{ + DEFiRet; + ruleset_t* pThis = (ruleset_t*) pData; + dbgprintf("Activating Ruleset Queue[%p] for Ruleset %s\n", + pThis->pQueue, pThis->pszName); + if(pThis->pQueue != NULL) + startMainQueue(pThis->pQueue); + RETiRet; +} +/* activate all ruleset queues */ +rsRetVal +activateRulesetQueues() +{ + DEFiRet; + + llExecFunc(&(runConf->rulesets.llRulesets), doActivateRulesetQueues, NULL); + + RETiRet; +} + static void execAct(struct cnfstmt *stmt, msg_t *pMsg, wti_t *pWti) -- cgit v1.2.3