mirror of
https://github.com/rsyslog/rsyslog.git
synced 2025-12-17 09:20:41 +01:00
Merge branch 'v5-stable' into beta
This commit is contained in:
commit
4ce8111ea6
@ -709,6 +709,11 @@ Version 5.8.13 [V5-stable] 2012-06-??
|
||||
- bugfix: randomized IP option header in omudpspoof caused problems
|
||||
closes: http://bugzilla.adiscon.com/show_bug.cgi?id=327
|
||||
Thanks to Rick Brown for helping to test out the patch.
|
||||
- bugfix: potential abort if output plugin logged message during shutdown
|
||||
note that none of the rsyslog-provided plugins does this
|
||||
Thanks to bodik and Rohit Prasad for alerting us on this bug and
|
||||
analyzing it.
|
||||
fixes: http://bugzilla.adiscon.com/show_bug.cgi?id=347
|
||||
---------------------------------------------------------------------------
|
||||
Version 5.8.12 [V5-stable] 2012-06-06
|
||||
- add small delay (50ms) after sending shutdown message
|
||||
|
||||
@ -610,6 +610,8 @@ static rsRetVal objDeserializeProperty(var_t *pProp, strm_t *pStrm)
|
||||
number_t i;
|
||||
number_t iLen;
|
||||
uchar c;
|
||||
int step = 0; /* which step was successful? */
|
||||
int64 offs;
|
||||
|
||||
assert(pProp != NULL);
|
||||
|
||||
@ -630,13 +632,16 @@ static rsRetVal objDeserializeProperty(var_t *pProp, strm_t *pStrm)
|
||||
NEXTC;
|
||||
}
|
||||
CHKiRet(cstrFinalize(pProp->pcsName));
|
||||
step = 1;
|
||||
|
||||
/* property type */
|
||||
CHKiRet(objDeserializeNumber(&i, pStrm));
|
||||
pProp->varType = i;
|
||||
step = 2;
|
||||
|
||||
/* size (needed for strings) */
|
||||
CHKiRet(objDeserializeNumber(&iLen, pStrm));
|
||||
step = 3;
|
||||
|
||||
/* we now need to deserialize the value */
|
||||
switch(pProp->varType) {
|
||||
@ -653,12 +658,44 @@ static rsRetVal objDeserializeProperty(var_t *pProp, strm_t *pStrm)
|
||||
dbgprintf("invalid VARTYPE %d\n", pProp->varType);
|
||||
break;
|
||||
}
|
||||
step = 4;
|
||||
|
||||
/* we should now be at the end of the line. So the next char must be \n */
|
||||
NEXTC;
|
||||
if(c != '\n') ABORT_FINALIZE(RS_RET_INVALID_PROPFRAME);
|
||||
|
||||
finalize_it:
|
||||
if(Debug && iRet != RS_RET_OK) {
|
||||
strm.GetCurrOffset(pStrm, &offs);
|
||||
dbgprintf("error %d deserializing property name, offset %lld, step %d\n",
|
||||
iRet, offs, step);
|
||||
if(step >= 1) {
|
||||
dbgprintf("error property name: '%s'\n", rsCStrGetSzStrNoNULL(pProp->pcsName));
|
||||
}
|
||||
if(step >= 2) {
|
||||
dbgprintf("error var type: '%d'\n", pProp->varType);
|
||||
}
|
||||
if(step >= 3) {
|
||||
dbgprintf("error len: '%d'\n", (int) iLen);
|
||||
}
|
||||
if(step >= 4) {
|
||||
switch(pProp->varType) {
|
||||
case VARTYPE_STR:
|
||||
dbgprintf("error data string: '%s'\n",
|
||||
rsCStrGetSzStrNoNULL(pProp->val.pStr));
|
||||
break;
|
||||
case VARTYPE_NUMBER:
|
||||
dbgprintf("error number: %d\n", (int) pProp->val.num);
|
||||
break;
|
||||
case VARTYPE_SYSLOGTIME:
|
||||
dbgprintf("syslog time was successfully parsed (but "
|
||||
"is not displayed\n");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
RETiRet;
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user