]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/init.c
ITS#4088 force cursors to use same locker
[openldap] / servers / slapd / back-bdb / init.c
index 014ed2d30a4389d459e8289fab540253b256934e..36af08c8e5d03e6fe3e42ff3949172c949718b4b 100644 (file)
@@ -278,6 +278,15 @@ bdb_db_open( BackendDB *be )
                        }
                        /* Prev environment had TXN support, get rid of it */
                        if ( !flags_ok ) {
+                               bdb->bi_dbenv->close( bdb->bi_dbenv, 0 );
+                               bdb->bi_dbenv = NULL;
+                               rc = db_env_create( &bdb->bi_dbenv, 0 );
+                               if( rc != 0 ) {
+                                       Debug( LDAP_DEBUG_ANY,
+                                               "bdb_db_open: db_env_create failed: %s (%d)\n",
+                                               db_strerror(rc), rc, 0 );
+                                       return rc;
+                               }
                                bdb->bi_dbenv->remove( bdb->bi_dbenv, dbhome, 0 );
                                bdb->bi_dbenv = NULL;
                        }
@@ -303,6 +312,10 @@ bdb_db_open( BackendDB *be )
                        open_env = 0;
                } else {
                        /* Create a new env that can take the desired settings */
+                       if ( bdb->bi_dbenv != NULL ) {
+                               bdb->bi_dbenv->close( bdb->bi_dbenv, 0 );
+                               bdb->bi_dbenv = NULL;
+                       }
                        rc = db_env_create( &bdb->bi_dbenv, 0 );
                        if( rc != 0 ) {
                                Debug( LDAP_DEBUG_ANY,