diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index b0586d1ba..b0918c52c 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -258,8 +258,9 @@ dt_msg_queue_submit(struct dt_msg_queue* mq, void* buf, size_t len) wakeupstarttimer = 1; /* if list contains more than wakeupnum elements, wakeup now, * or if list is (going to be) almost full */ - if(mq->msgcount+1 > DTIO_MSG_FOR_WAKEUP || - mq->cursize+len >= mq->maxsize * 9 / 10) + if(mq->msgcount == DTIO_MSG_FOR_WAKEUP || + (mq->cursize < mq->maxsize * 9 / 10 && + mq->cursize+len >= mq->maxsize * 9 / 10)) wakeupnow = 1; /* see if it is going to fit */ if(mq->cursize + len > mq->maxsize) { diff --git a/doc/Changelog b/doc/Changelog index e316ea99f..4cd9a8e78 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 23 September 2020: Wouter - Fix #305: dnstap logging significantly affects unbound performance (regression in 1.11). + - Fix #305: only wake up thread when threshold reached. 23 September 2020: Ralph - Fix edns-client-tags get_option typo