summaryrefslogtreecommitdiffstats
path: root/runtime/ruleset.c
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2013-11-14 15:51:52 +0100
committerRainer Gerhards <rgerhards@adiscon.com>2013-11-14 15:51:52 +0100
commit2387c9281d847b68f9c6268c1ba5e557e78f906c (patch)
treea4052fc66312709b4d7c25ed56d462f2c889c602 /runtime/ruleset.c
parentf6e6e5edf172a06a20305895bcf0bf8509f08261 (diff)
downloadrsyslog-2387c9281d847b68f9c6268c1ba5e557e78f906c.tar.gz
rsyslog-2387c9281d847b68f9c6268c1ba5e557e78f906c.tar.bz2
rsyslog-2387c9281d847b68f9c6268c1ba5e557e78f906c.zip
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.
Diffstat (limited to 'runtime/ruleset.c')
-rw-r--r--runtime/ruleset.c22
1 files changed, 22 insertions, 0 deletions
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)