diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2009-07-14 18:57:49 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2009-07-14 18:57:49 +0200 |
commit | 5416a94bbe9a24ad9236755a9e21944685fc231b (patch) | |
tree | a7a15b3170587a856ecf1831ea33c25be5b76aa5 /tcpclt.c | |
parent | c126e4464a2510eaf42526af64f85fa9a303b355 (diff) | |
download | rsyslog-5416a94bbe9a24ad9236755a9e21944685fc231b.tar.gz rsyslog-5416a94bbe9a24ad9236755a9e21944685fc231b.tar.xz rsyslog-5416a94bbe9a24ad9236755a9e21944685fc231b.zip |
added tcp output rebinding option.
needs some more testing and doc
Diffstat (limited to 'tcpclt.c')
-rw-r--r-- | tcpclt.c | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -297,6 +297,12 @@ Send(tcpclt_t *pThis, void *pData, char *msg, size_t len) CHKiRet(TCPSendBldFrame(pThis, &msg, &len, &bMsgMustBeFreed)); + if(pThis->iRebindInterval > 0 && ++pThis->iNumMsgs == pThis->iRebindInterval) { + /* we need to rebind, and use the retry logic for this*/ + CHKiRet(pThis->prepRetryFunc(pData)); /* try to recover */ + pThis->iNumMsgs = 0; + } + while(!bDone) { /* loop is broken when send succeeds or error occurs */ CHKiRet(pThis->initFunc(pData)); iRet = pThis->sendFunc(pData, msg, len); @@ -388,6 +394,13 @@ SetFraming(tcpclt_t *pThis, TCPFRAMINGMODE framing) pThis->tcp_framing = framing; RETiRet; } +static rsRetVal +SetRebindInterval(tcpclt_t *pThis, int iRebindInterval) +{ + DEFiRet; + pThis->iRebindInterval = iRebindInterval; + RETiRet; +} /* Standard-Constructor @@ -445,6 +458,7 @@ CODESTARTobjQueryInterface(tcpclt) pIf->SetSendFrame = SetSendFrame; pIf->SetSendPrepRetry = SetSendPrepRetry; pIf->SetFraming = SetFraming; + pIf->SetRebindInterval = SetRebindInterval; finalize_it: ENDobjQueryInterface(tcpclt) |