From 9f7b03b801ed82e499666e5c29b4dda094fb1d57 Mon Sep 17 00:00:00 2001 From: Rainer Gerhards Date: Thu, 2 Aug 2007 12:53:52 +0000 Subject: changed doAction() syslogd internal functions to allow for larger data & state data - in preparation for actions that shall only be executed when previous action was suspended (the switchover case, e.g. for failed databases or TCP receivers) --- syslogd.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'syslogd.c') diff --git a/syslogd.c b/syslogd.c index 98cf76ee..34c4f2c2 100644 --- a/syslogd.c +++ b/syslogd.c @@ -2532,14 +2532,18 @@ finalize_it: * executed from within llExecFunc() of the action list. * rgerhards, 2007-08-02 */ +typedef struct processMsgDoActions_s { + int bPrevWasSuspended; /* was the previous action suspended? */ + msg_t *pMsg; +} processMsgDoActions_t; DEFFUNC_llExecFunc(processMsgDoActions) { DEFiRet; action_t *pAction = (action_t*) pData; - msg_t *pMsg = (msg_t*) pParam; + processMsgDoActions_t *pDoActData = (processMsgDoActions_t*) pParam; assert(pAction != NULL); - if(callAction(pMsg, pAction) == RS_RET_DISCARDMSG) { + if(callAction(pDoActData->pMsg, pAction) == RS_RET_DISCARDMSG) { ABORT_FINALIZE(RS_RET_DISCARDMSG); } @@ -2558,6 +2562,7 @@ static void processMsg(msg_t *pMsg) { selector_t *f; int bContinue; + processMsgDoActions_t DoActData; assert(pMsg != NULL); @@ -2583,7 +2588,9 @@ static void processMsg(msg_t *pMsg) } /* ok -- from here, we have action-specific code, nothing really selector-specific -- rger 2007-08-01 */ - if(llExecFunc(&f->llActList, processMsgDoActions, (void*)pMsg) == RS_RET_DISCARDMSG) + DoActData.pMsg = pMsg; + DoActData.bPrevWasSuspended = 0; + if(llExecFunc(&f->llActList, processMsgDoActions, (void*)&DoActData) == RS_RET_DISCARDMSG) bContinue = 0; } } -- cgit v1.2.3