diff options
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/rsconf.c | 9 | ||||
-rw-r--r-- | runtime/ruleset.c | 22 | ||||
-rw-r--r-- | runtime/ruleset.h | 1 |
3 files changed, 30 insertions, 2 deletions
diff --git a/runtime/rsconf.c b/runtime/rsconf.c index c855779e..f2feb989 100644 --- a/runtime/rsconf.c +++ b/runtime/rsconf.c @@ -679,8 +679,12 @@ activateMainQueue() mainqCnfObj = glbl.GetmainqCnfObj(); DBGPRINTF("activateMainQueue: mainq cnf obj ptr is %p\n", mainqCnfObj); /* create message queue */ - CHKiRet_Hdlr(createMainQueue(&pMsgQueue, UCHAR_CONSTANT("main Q"), - (mainqCnfObj == NULL) ? NULL : mainqCnfObj->nvlst)) { + iRet = createMainQueue(&pMsgQueue, UCHAR_CONSTANT("main Q"), + (mainqCnfObj == NULL) ? NULL : mainqCnfObj->nvlst); + if(iRet == RS_RET_OK) { + iRet = startMainQueue(pMsgQueue); + } + if(iRet != RS_RET_OK) { /* no queue is fatal, we need to give up in that case... */ fprintf(stderr, "fatal error %d: could not create message queue - rsyslogd can not run!\n", iRet); FINALIZE; @@ -743,6 +747,7 @@ activate(rsconf_t *cnf) tellModulesActivateConfig(); startInputModules(); CHKiRet(activateActions()); + CHKiRet(activateRulesetQueues()); CHKiRet(activateMainQueue()); /* finally let the inputs run... */ runInputModules(); 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) diff --git a/runtime/ruleset.h b/runtime/ruleset.h index 0af3578c..d3dfd664 100644 --- a/runtime/ruleset.h +++ b/runtime/ruleset.h @@ -105,6 +105,7 @@ rulesetHasQueue(ruleset_t *pRuleset) rsRetVal rulesetGetRuleset(rsconf_t *conf, ruleset_t **ppRuleset, uchar *pszName); rsRetVal rulesetOptimizeAll(rsconf_t *conf); rsRetVal rulesetProcessCnf(struct cnfobj *o); +rsRetVal activateRulesetQueues(void); /* Set a current rule set to already-known pointer */ static inline void |