diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2012-08-20 12:37:39 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2012-08-20 12:37:39 +0200 |
commit | 4ce8111ea6c0a7cf111394edf93776a8b536d4d7 (patch) | |
tree | 962cbad40adc1cb99601c9c2e30fe51697779ee6 /tools/syslogd.c | |
parent | 8e408e9f532173c709c48f57c175cbd453fe8d5b (diff) | |
parent | 9fb96ec34312b6da7b496db0b3d5eb86442fed06 (diff) | |
download | rsyslog-4ce8111ea6c0a7cf111394edf93776a8b536d4d7.tar.gz rsyslog-4ce8111ea6c0a7cf111394edf93776a8b536d4d7.tar.bz2 rsyslog-4ce8111ea6c0a7cf111394edf93776a8b536d4d7.zip |
Merge branch 'v5-stable' into beta
Diffstat (limited to 'tools/syslogd.c')
-rw-r--r-- | tools/syslogd.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/tools/syslogd.c b/tools/syslogd.c index 44e60b1c..79cab162 100644 --- a/tools/syslogd.c +++ b/tools/syslogd.c @@ -630,11 +630,19 @@ submitMsg(msg_t *pMsg) ISOBJ_TYPE_assert(pMsg, msg); pRuleset = MsgGetRuleset(pMsg); - pQueue = (pRuleset == NULL) ? pMsgQueue : ruleset.GetRulesetQueue(pRuleset); + + /* if a plugin logs a message during shutdown, the queue may no longer exist */ + if(pQueue == NULL) { + DBGPRINTF("submitMsg() could not submit message - " + "queue does (no longer?) exist - ignored\n"); + FINALIZE; + } + MsgPrepareEnqueue(pMsg); qqueueEnqObj(pQueue, pMsg->flowCtlType, (void*) pMsg); +finalize_it: RETiRet; } @@ -655,12 +663,20 @@ multiSubmitMsg(multi_submit_t *pMultiSub) if(pMultiSub->nElem == 0) FINALIZE; + pRuleset = MsgGetRuleset(pMultiSub->ppMsgs[0]); + pQueue = (pRuleset == NULL) ? pMsgQueue : ruleset.GetRulesetQueue(pRuleset); + + /* if a plugin logs a message during shutdown, the queue may no longer exist */ + if(pQueue == NULL) { + DBGPRINTF("multiSubmitMsg() could not submit message - " + "queue does (no longer?) exist - ignored\n"); + FINALIZE; + } + for(i = 0 ; i < pMultiSub->nElem ; ++i) { MsgPrepareEnqueue(pMultiSub->ppMsgs[i]); } - pRuleset = MsgGetRuleset(pMultiSub->ppMsgs[0]); - pQueue = (pRuleset == NULL) ? pMsgQueue : ruleset.GetRulesetQueue(pRuleset); iRet = pQueue->MultiEnq(pQueue, pMultiSub); pMultiSub->nElem = 0; |