mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-24 16:49:39 -05:00
attrdb fixes
This commit is contained in:
parent
b107cffb87
commit
8cc61d8dbd
2 changed files with 21 additions and 2 deletions
|
|
@ -94,6 +94,7 @@ mdb_attr_dbs_open(
|
|||
{
|
||||
struct mdb_info *mdb = (struct mdb_info *) be->be_private;
|
||||
MDB_txn *txn;
|
||||
MDB_dbi *dbis = NULL;
|
||||
int i, flags;
|
||||
int rc;
|
||||
|
||||
|
|
@ -109,6 +110,7 @@ mdb_attr_dbs_open(
|
|||
cr->msg, 0, 0 );
|
||||
return rc;
|
||||
}
|
||||
dbis = ch_calloc( 1, mdb->mi_nattrs * sizeof(MDB_dbi) );
|
||||
} else {
|
||||
rc = 0;
|
||||
}
|
||||
|
|
@ -133,6 +135,9 @@ mdb_attr_dbs_open(
|
|||
cr->msg, 0, 0 );
|
||||
break;
|
||||
}
|
||||
/* Remember newly opened DBI handles */
|
||||
if ( dbis )
|
||||
dbis[i] = mdb->mi_attrs[i]->ai_dbi;
|
||||
}
|
||||
|
||||
/* Only commit if this is our txn */
|
||||
|
|
@ -150,6 +155,17 @@ mdb_attr_dbs_open(
|
|||
} else {
|
||||
mdb_txn_abort( txn );
|
||||
}
|
||||
/* Something failed, forget anything we just opened */
|
||||
if ( rc ) {
|
||||
for ( i=0; i<mdb->mi_nattrs; i++ ) {
|
||||
if ( dbis[i] ) {
|
||||
mdb->mi_attrs[i]->ai_dbi = 0;
|
||||
mdb->mi_attrs[i]->ai_indexmask |= MDB_INDEX_DELETING;
|
||||
}
|
||||
}
|
||||
mdb_attr_flush( mdb );
|
||||
}
|
||||
ch_free( dbis );
|
||||
}
|
||||
|
||||
return rc;
|
||||
|
|
|
|||
|
|
@ -5949,8 +5949,11 @@ out:
|
|||
ca->reply = msg;
|
||||
}
|
||||
|
||||
if ( ca->cleanup )
|
||||
ca->cleanup( ca );
|
||||
if ( ca->cleanup ) {
|
||||
i = ca->cleanup( ca );
|
||||
if (rc == LDAP_SUCCESS)
|
||||
rc = i;
|
||||
}
|
||||
out_noop:
|
||||
if ( rc == LDAP_SUCCESS ) {
|
||||
attrs_free( save_attrs );
|
||||
|
|
|
|||
Loading…
Reference in a new issue