diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2008-02-11 07:29:01 +0000 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2008-02-11 07:29:01 +0000 |
commit | 3141c15442cdb669d6e5a609011e655e2b1e8815 (patch) | |
tree | 8db9660158ad3745f889b4017db978d31449a1be | |
parent | 886bcc2dec65590dfe893d7d02bd28d480a8e876 (diff) | |
download | rsyslog-3141c15442cdb669d6e5a609011e655e2b1e8815.tar.gz rsyslog-3141c15442cdb669d6e5a609011e655e2b1e8815.tar.xz rsyslog-3141c15442cdb669d6e5a609011e655e2b1e8815.zip |
bugfix: suspended actions were not always properly resumed varmojfekoj
provided the patch - many thanks!
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | syslogd.c | 13 | ||||
-rw-r--r-- | tcpsyslog.c | 6 |
3 files changed, 17 insertions, 4 deletions
@@ -5,6 +5,8 @@ Version 2.0.2 STABLE (rgerhards), 2008-02-?? - added x-info field to rsyslogd startup/shutdown message. Hopefully points users to right location for further info (many don't even know they run rsyslog ;)) +- bugfix: suspended actions were not always properly resumed + varmojfekoj provided the patch - many thanks! --------------------------------------------------------------------------- Version 2.0.1 STABLE (rgerhards), 2008-01-24 - fixed a bug in integer conversion - but this function was never called, @@ -2491,7 +2491,7 @@ static rsRetVal callAction(msg_t *pMsg, action_t *pAction) */ if(pAction->f_pMsg != NULL) { if(pAction->f_prevcount > 0) - fprintlog(pAction); + CHKiRet(fprintlog(pAction)); /* we do not care about iRet above - I think it's right but if we have * some troubles, you know where to look at ;) -- rgerhards, 2007-08-01 */ @@ -3437,9 +3437,15 @@ DEFFUNC_llExecFunc(domarkActions) dbgprintf("flush %s: repeated %d times, %d sec.\n", modGetStateName(pAction->pMod), pAction->f_prevcount, repeatinterval[pAction->f_repeatcount]); + if(actionIsSuspended(pAction) && + (actionTryResume(pAction) != RS_RET_OK)) { + goto finalize_it; + } fprintlog(pAction); BACKOFF(pAction); } + +finalize_it: UnlockObj(pAction); return RS_RET_OK; /* we ignore errors, we can not do anything either way */ @@ -4109,9 +4115,14 @@ DEFFUNC_llExecFunc(freeSelectorsActions) /* flush any pending output */ if(pAction->f_prevcount) { + if(actionIsSuspended(pAction) && + (actionTryResume(pAction) != RS_RET_OK)) { + goto finalize_it; + } fprintlog(pAction); } +finalize_it: return RS_RET_OK; /* never fails ;) */ } diff --git a/tcpsyslog.c b/tcpsyslog.c index 311e4308..6b1c446c 100644 --- a/tcpsyslog.c +++ b/tcpsyslog.c @@ -1020,7 +1020,7 @@ int TCPSendCreateSocket(struct addrinfo *addrDest) return fd; } else { char errStr[1024]; - dbgprintf("create tcp connection failed, reason %s", + dbgprintf("create tcp connection failed, reason %s\n", rs_strerror_r(errno, errStr, sizeof(errStr))); } @@ -1032,12 +1032,12 @@ int TCPSendCreateSocket(struct addrinfo *addrDest) } else { char errStr[1024]; - dbgprintf("couldn't create send socket, reason %s", rs_strerror_r(errno, errStr, sizeof(errStr))); + dbgprintf("couldn't create send socket, reason %s\n", rs_strerror_r(errno, errStr, sizeof(errStr))); } r = r->ai_next; } - dbgprintf("no working socket could be obtained"); + dbgprintf("no working socket could be obtained\n"); return -1; } |