]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
pullup:
authorMark Andrews <marka@isc.org>
Fri, 19 Oct 2001 00:22:26 +0000 (00:22 +0000)
committerMark Andrews <marka@isc.org>
Fri, 19 Oct 2001 00:22:26 +0000 (00:22 +0000)
1061.   [bug]           If periodic cache cleaning happened to start
                        while cleaning due to reaching the configured
                        maximum cache size was in progress, the server
                        could catch an assertion failure. [RT #1912]

CHANGES
lib/dns/cache.c

diff --git a/CHANGES b/CHANGES
index 27f11696909a6cb610817aa9bb18046b3195f325..ef839634157ae17ae824a7c1fe651e9ff7bc454c 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,8 @@
+1061.  [bug]           If periodic cache cleaning happened to start
+                       while cleaning due to reaching the configured
+                       maximum cache size was in progress, the server
+                       could catch an assertion failure. [RT #1912]
+
 1057.  [bug]           Reloading the server after adding a "file" clause
                        to a zone statement could cause the server to
                        crash due to a typo in change 1016.
index 39127e5d1dd4fb6c682c9a5e1d0ddda0a2bacc4a..e2bad8d2be9c81c1acfc0bc9bc20b61b34a07924 100644 (file)
@@ -15,7 +15,7 @@
  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: cache.c,v 1.45 2001/07/02 20:44:30 gson Exp $ */
+/* $Id: cache.c,v 1.45.2.1 2001/10/19 00:22:26 marka Exp $ */
 
 #include <config.h>
 
@@ -622,16 +622,10 @@ cleaning_timer_action(isc_task_t *task, isc_event_t *event) {
        INSIST(task == cleaner->task);
        INSIST(event->ev_type == ISC_TIMEREVENT_TICK);
 
-       if (cleaner->state == cleaner_s_idle) {
+       if (cleaner->state == cleaner_s_idle)
                begin_cleaning(cleaner);
 
-               isc_event_free(&event);
-       } else
-               /*
-                * incremental_cleaning_action() takes responsibility
-                * for freeing or preserving the event.
-                */
-               incremental_cleaning_action(task, event);
+       isc_event_free(&event);
 }
 
 /*
@@ -679,8 +673,7 @@ incremental_cleaning_action(isc_task_t *task, isc_event_t *event) {
        UNUSED(task);
 
        INSIST(task == cleaner->task);
-       INSIST(event->ev_type == DNS_EVENT_CACHECLEAN ||
-              event->ev_type == ISC_TIMEREVENT_TICK);
+       INSIST(event->ev_type == DNS_EVENT_CACHECLEAN);
 
        if (cleaner->state == cleaner_s_done) {
                cleaner->state = cleaner_s_busy;