/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 2000-2011 The OpenLDAP Foundation.
+ * Copyright 2000-2012 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
MDB_MAXREADERS,
MDB_MAXSIZE,
MDB_MODE,
- MDB_SSTACK,
+ MDB_SSTACK
};
static ConfigTable mdbcfg[] = {
op->o_bd = be;
id = 1;
- key.mv_data = &id;
key.mv_size = sizeof(ID);
while ( 1 ) {
if ( slapd_shutdown )
break;
- rc = mdb_txn_begin( mdb->mi_dbenv, 0, &txn );
+ rc = mdb_txn_begin( mdb->mi_dbenv, NULL, 0, &txn );
if ( rc )
break;
rc = mdb_cursor_open( txn, mdb->mi_id2entry, &curs );
}
if ( getnext ) {
getnext = 0;
+ key.mv_data = &id;
rc = mdb_cursor_get( curs, &key, &data, MDB_SET_RANGE );
if ( rc ) {
mdb_txn_abort( txn );
break;
}
rc = mdb_index_entry( op, txn, MDB_INDEX_UPDATE_OP, e );
+ mdb_entry_return( op, e );
if ( rc == 0 ) {
rc = mdb_txn_commit( txn );
txn = NULL;
+ } else {
+ mdb_txn_abort( txn );
+ txn = NULL;
}
if ( rc )
break;
case MDB_MAXREADERS:
mdb->mi_readers = c->value_int;
- if ( mdb->mi_flags & MDB_IS_OPEN )
+ if ( mdb->mi_flags & MDB_IS_OPEN ) {
mdb->mi_flags |= MDB_RE_OPEN;
+ c->cleanup = mdb_cf_cleanup;
+ }
break;
case MDB_MAXSIZE:
mdb->mi_mapsize = c->value_ulong;
- if ( mdb->mi_flags & MDB_IS_OPEN )
+ if ( mdb->mi_flags & MDB_IS_OPEN ) {
mdb->mi_flags |= MDB_RE_OPEN;
+ c->cleanup = mdb_cf_cleanup;
+ }
break;
}