summaryrefslogtreecommitdiffstats
path: root/action.c
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2013-11-06 14:22:49 +0100
committerRainer Gerhards <rgerhards@adiscon.com>2013-11-06 14:22:49 +0100
commit21d85b3b67a58fed532e377b2a3e761f9b1e77a0 (patch)
treeeed1672c40d97e5b611c55978d94a8a8e52e3ead /action.c
parent8a6f7be85375f9c6200c455b9b62804e2cd13c19 (diff)
downloadrsyslog-21d85b3b67a58fed532e377b2a3e761f9b1e77a0.tar.gz
rsyslog-21d85b3b67a58fed532e377b2a3e761f9b1e77a0.tar.bz2
rsyslog-21d85b3b67a58fed532e377b2a3e761f9b1e77a0.zip
refactor: structure processing in action commit
prep work for retry processing
Diffstat (limited to 'action.c')
-rw-r--r--action.c38
1 files changed, 34 insertions, 4 deletions
diff --git a/action.c b/action.c
index 076128ed..6b7169ab 100644
--- a/action.c
+++ b/action.c
@@ -972,22 +972,40 @@ finalize_it:
}
-/* Commit try committing (do not handle retry processing and such) */
+/* the following functions simulates a potential future new omo callback */
static rsRetVal
-actionTryCommit(action_t *pThis, wti_t *pWti)
+doTransaction(action_t *pThis, wti_t *pWti)
{
actWrkrInfo_t *wrkrInfo;
- actWrkrIParams_t *iparamCurr, *iparamDel;
+ actWrkrIParams_t *iparamCurr;
DEFiRet;
wrkrInfo = &(pWti->actWrkrInfo[pThis->iActionNbr]);
- dbgprintf("DDDD: actionCommit: action %d, root %p\n", pThis->iActionNbr, wrkrInfo->iparamRoot);
+ dbgprintf("DDDD: doTransaction: action %d, root %p\n", pThis->iActionNbr, wrkrInfo->iparamRoot);
if(wrkrInfo->iparamRoot != NULL) {
iparamCurr = wrkrInfo->iparamRoot;
while(iparamCurr != NULL) {
iRet = actionProcessMessage(pThis, iparamCurr->msgFlags,
iparamCurr->staticActParams,
pWti);
+ iparamCurr = iparamCurr->next;
+ }
+ }
+ RETiRet;
+}
+
+
+static void
+actionFreeParams(action_t *pThis, wti_t *pWti)
+{
+ actWrkrInfo_t *wrkrInfo;
+ actWrkrIParams_t *iparamCurr, *iparamDel;
+
+ wrkrInfo = &(pWti->actWrkrInfo[pThis->iActionNbr]);
+ dbgprintf("DDDD: actionFreeParams: action %d, root %p\n", pThis->iActionNbr, wrkrInfo->iparamRoot);
+ if(wrkrInfo->iparamRoot != NULL) {
+ iparamCurr = wrkrInfo->iparamRoot;
+ while(iparamCurr != NULL) {
releaseDoActionParams(pThis, pWti);
iparamDel = iparamCurr;
iparamCurr = iparamCurr->next;
@@ -995,6 +1013,17 @@ actionTryCommit(action_t *pThis, wti_t *pWti)
}
wrkrInfo->iparamRoot = wrkrInfo->iparamLast = NULL;
}
+}
+
+
+/* Commit try committing (do not handle retry processing and such) */
+static rsRetVal
+actionTryCommit(action_t *pThis, wti_t *pWti)
+{
+ //actWrkrInfo_t *wrkrInfo;
+ DEFiRet;
+
+ doTransaction(pThis, pWti);
CHKiRet(actionPrepare(pThis, pWti));
if(getActionState(pWti, pThis) == ACT_STATE_ITX) {
@@ -1029,6 +1058,7 @@ dbgprintf("DDDDD: calling endTransaction for action %d\n", pThis->iActionNbr);
iRet = getReturnCode(pThis, pWti);
finalize_it:
+ actionFreeParams(pThis, pWti);
RETiRet;
}