From 17dc146c7c2399e7bd64e776775535b9484ad1d5 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Thu, 22 Jan 2015 10:38:40 +1100 Subject: [PATCH] 4044. [bug] Change 3955 was not complete resulting is a assertion failure is the timing was just right. [RT #38352] --- CHANGES | 3 +++ lib/isc/ratelimiter.c | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 1c16e4dff0..0c1dea216f 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +4044. [bug] Change 3955 was not complete resulting is a assertion + failure is the timing was just right. [RT #38352] + 4043. [func] "rndc modzone" can be used to modify the configuration of an existing zone, using similar syntax to "rndc addzone". [RT #37895] diff --git a/lib/isc/ratelimiter.c b/lib/isc/ratelimiter.c index 1d78710def..96571e1ca4 100644 --- a/lib/isc/ratelimiter.c +++ b/lib/isc/ratelimiter.c @@ -154,8 +154,8 @@ isc_ratelimiter_enqueue(isc_ratelimiter_t *rl, isc_task_t *task, if (rl->state == isc_ratelimiter_ratelimited || rl->state == isc_ratelimiter_stalled) { ev->ev_sender = task; - ISC_LIST_APPEND(rl->pending, ev, ev_link); *eventp = NULL; + ISC_LIST_APPEND(rl->pending, ev, ev_link); } else if (rl->state == isc_ratelimiter_idle) { result = isc_timer_reset(rl->timer, isc_timertype_ticker, NULL, &rl->interval, ISC_FALSE); @@ -181,9 +181,10 @@ isc_ratelimiter_dequeue(isc_ratelimiter_t *rl, isc_event_t *event) { REQUIRE(event != NULL); LOCK(&rl->lock); - if (ISC_LINK_LINKED(event, ev_link)) + if (ISC_LINK_LINKED(event, ev_link)) { ISC_LIST_UNLINK(rl->pending, event, ev_link); - else + event->ev_sender = NULL; + } else result = ISC_R_NOTFOUND; UNLOCK(&rl->lock); return (result);