summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2008-10-09 13:00:21 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2008-10-09 13:00:21 +0200
commitd5a3d4b3a7151906a4eec59ec20fc7c90cefde8c (patch)
treed049e46bafaee23c8fc1310d30c55d69e409e024
parent1ec858244efc4265fa5fa4c797c006a82ca52308 (diff)
parent39766091984b3669767e8742100876ebf8e3ea86 (diff)
downloadrsyslog-d5a3d4b3a7151906a4eec59ec20fc7c90cefde8c.tar.gz
rsyslog-d5a3d4b3a7151906a4eec59ec20fc7c90cefde8c.tar.xz
rsyslog-d5a3d4b3a7151906a4eec59ec20fc7c90cefde8c.zip
Merge branch 'v3-stable' into beta
-rw-r--r--ChangeLog3
-rw-r--r--runtime/queue.c2
2 files changed, 4 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 352c98c4..05f080ea 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -174,6 +174,9 @@ Version 3.18.5 (rgerhards), 2008-10-??
because getnameinfo() is not cancel-safe, but was not guarded against
being cancelled. pthread_cancel() is routinely being called during
HUP processing.
+- bugfix[minor]: if queue size reached light_delay mark, enqueuing
+ could potentially be blocked for a longer period of time, which
+ was not the behaviour desired.
- doc bugfix: $ActionExecOnlyWhenPreviousIsSuspended was still misspelled
as $...OnlyIfPrev... in some parts of the documentation. Thanks to
Lorenzo M. Catucci for reporting this bug.
diff --git a/runtime/queue.c b/runtime/queue.c
index 00f811a0..0768cd77 100644
--- a/runtime/queue.c
+++ b/runtime/queue.c
@@ -2142,7 +2142,7 @@ queueEnqObj(queue_t *pThis, flowControl_t flowCtlType, void *pUsr)
pthread_cond_wait(&pThis->belowFullDlyWtrMrk, pThis->mut); /* TODO error check? But what do then? */
}
} else if(flowCtlType == eFLOWCTL_LIGHT_DELAY) {
- while(pThis->iQueueSize >= pThis->iLightDlyMrk) {
+ if(pThis->iQueueSize >= pThis->iLightDlyMrk) {
dbgoprint((obj_t*) pThis, "enqueueMsg: LightDelay mark reached for light delayble message - blocking a bit.\n");
timeoutComp(&t, 1000); /* 1000 millisconds = 1 second TODO: make configurable */
pthread_cond_timedwait(&pThis->belowLightDlyWtrMrk, pThis->mut, &t); /* TODO error check? But what do then? */