summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2009-10-16 09:33:21 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2009-10-16 09:33:21 +0200
commitd9f1a16de4723f9e096fa9abe47e8a845c815df0 (patch)
tree222a519573840ca32a7fa05292a99da3ae7533f1
parent5c0920c159dc76565af344d65d0aa57d62cc389a (diff)
downloadrsyslog-d9f1a16de4723f9e096fa9abe47e8a845c815df0.tar.gz
rsyslog-d9f1a16de4723f9e096fa9abe47e8a845c815df0.tar.xz
rsyslog-d9f1a16de4723f9e096fa9abe47e8a845c815df0.zip
improved input thread termination for imtcp and imuxsock
-rw-r--r--plugins/imuxsock/imuxsock.c3
-rw-r--r--tcpsrv.c4
2 files changed, 7 insertions, 0 deletions
diff --git a/plugins/imuxsock/imuxsock.c b/plugins/imuxsock/imuxsock.c
index b8546ce3..a85bc4ef 100644
--- a/plugins/imuxsock/imuxsock.c
+++ b/plugins/imuxsock/imuxsock.c
@@ -330,6 +330,8 @@ CODESTARTrunInput
break; /* terminate input! */
for (i = 0; i < nfunix && nfds > 0; i++) {
+ if(glbl.GetGlobalInputTermState() == 1)
+ ABORT_FINALIZE(RS_RET_FORCE_TERM); /* terminate input! */
if ((fd = funix[i]) != -1 && FD_ISSET(fd, &readfds)) {
readSocket(fd, i);
--nfds; /* indicate we have processed one */
@@ -337,6 +339,7 @@ CODESTARTrunInput
}
}
+finalize_it:
RETiRet;
ENDrunInput
diff --git a/tcpsrv.c b/tcpsrv.c
index 49d8a099..5fe98a91 100644
--- a/tcpsrv.c
+++ b/tcpsrv.c
@@ -565,6 +565,8 @@ Run(tcpsrv_t *pThis)
break; /* terminate input! */
for(i = 0 ; i < pThis->iLstnCurr ; ++i) {
+ if(glbl.GetGlobalInputTermState() == 1)
+ ABORT_FINALIZE(RS_RET_FORCE_TERM);
CHKiRet(nssel.IsReady(pSel, pThis->ppLstn[i], NSDSEL_RD, &bIsReady, &nfds));
if(bIsReady) {
DBGPRINTF("New connect on NSD %p.\n", pThis->ppLstn[i]);
@@ -576,6 +578,8 @@ Run(tcpsrv_t *pThis)
/* now check the sessions */
iTCPSess = TCPSessGetNxtSess(pThis, -1);
while(nfds && iTCPSess != -1) {
+ if(glbl.GetGlobalInputTermState() == 1)
+ ABORT_FINALIZE(RS_RET_FORCE_TERM);
CHKiRet(nssel.IsReady(pSel, pThis->pSessions[iTCPSess]->pStrm, NSDSEL_RD, &bIsReady, &nfds));
if(bIsReady) {
doReceive(pThis, &pThis->pSessions[iTCPSess]);