]> git.sur5r.net Git - openldap/commitdiff
ITS#5698
authorQuanah Gibson-Mount <quanah@openldap.org>
Fri, 31 Oct 2008 23:54:18 +0000 (23:54 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Fri, 31 Oct 2008 23:54:18 +0000 (23:54 +0000)
CHANGES
servers/slapd/back-bdb/init.c

diff --git a/CHANGES b/CHANGES
index c7651e1edffd1842af7a22eaef5a3d8d9a4e5acf..bec65ffda20a355ca3d19c81dd244245b831a65c 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,7 @@
 OpenLDAP 2.4 Change Log
 
 OpenLDAP 2.4.13 Engineering
+       Fixed slapd-bdb/hdb invalid db crash (ITS#5698)
 
 OpenLDAP 2.4.12 Release (2008/10/12)
        Fixed libldap ldap_utf8_strchar arguments (ITS#5720)
index 14bd1b1bfcf14e4c579a02bec4e846a0a59a3b13..393b6a52f42038b677814c6533ec9d866498eb22 100644 (file)
@@ -640,6 +640,17 @@ bdb_db_destroy( BackendDB *be, ConfigReply *cr )
 {
        struct bdb_info *bdb = (struct bdb_info *) be->be_private;
 
+       /* stop and remove checkpoint task */
+       if ( bdb->bi_txn_cp_task ) {
+               struct re_s *re = bdb->bi_txn_cp_task;
+               bdb->bi_txn_cp_task = NULL;
+               ldap_pvt_thread_mutex_lock( &slapd_rq.rq_mutex );
+               if ( ldap_pvt_runqueue_isrunning( &slapd_rq, re ) )
+                       ldap_pvt_runqueue_stoptask( &slapd_rq, re );
+               ldap_pvt_runqueue_remove( &slapd_rq, re );
+               ldap_pvt_thread_mutex_unlock( &slapd_rq.rq_mutex );
+       }
+
        /* monitor handling */
        (void)bdb_monitor_db_destroy( be );