fix up bdb_entry_return() calls

This commit is contained in:
Kurt Zeilenga 2000-09-28 02:27:49 +00:00
parent fe23e0b875
commit 67a595b328
10 changed files with 66 additions and 15 deletions

View file

@ -24,7 +24,7 @@ bdb_add(
char *pdn = NULL;
Entry *p = NULL;
int rc;
const char *text = NULL;
const char *text;
AttributeDescription *children = slap_schema.si_ad_children;
DB_TXN *ltid = NULL;
struct bdb_op_info opinfo;
@ -68,6 +68,7 @@ retry: rc = txn_abort( ltid );
/* begin transaction */
rc = txn_begin( bdb->bi_dbenv, NULL, &ltid, 0 );
text = NULL;
if( rc != 0 ) {
Debug( LDAP_DEBUG_TRACE,
"bdb_add: txn_begin failed: %s (%d)\n",
@ -119,6 +120,7 @@ retry: rc = txn_abort( ltid );
? get_entry_referrals( be, conn, op, matched )
: NULL;
bdb_entry_return( be, matched );
matched = NULL;
} else {
matched_dn = NULL;

View file

@ -70,6 +70,8 @@ bdb_bind(
: NULL;
bdb_entry_return( be, matched );
matched = NULL;
} else {
refs = default_referral;
}
@ -240,7 +242,9 @@ bdb_bind(
done:
/* free entry and reader lock */
bdb_entry_return( be, e );
if( e != NULL ) {
bdb_entry_return( be, e );
}
/* front end with send result on success (rc==0) */
return rc;

View file

@ -53,6 +53,8 @@ bdb_compare(
? get_entry_referrals( be, conn, op, matched )
: NULL;
bdb_entry_return( be, matched );
matched = NULL;
} else {
refs = default_referral;
}
@ -117,7 +119,9 @@ return_results:
done:
/* free entry */
if( e != NULL ) bdb_entry_return( be, e );
if( e != NULL ) {
bdb_entry_return( be, e );
}
return rc;
}

View file

@ -27,7 +27,7 @@ bdb_delete(
char *pdn = NULL;
Entry *e, *p = NULL;
int rc;
const char *text = NULL;
const char *text;
int manageDSAit = get_manageDSAit( op );
AttributeDescription *children = slap_schema.si_ad_children;
DB_TXN *ltid = NULL;
@ -50,6 +50,7 @@ retry: /* transaction retry */
/* begin transaction */
rc = txn_begin( bdb->bi_dbenv, NULL, &ltid, 0 );
text = NULL;
if( rc != 0 ) {
Debug( LDAP_DEBUG_TRACE,
"bdb_delete: txn_begin failed: %s (%d)\n",
@ -94,6 +95,8 @@ retry: /* transaction retry */
? get_entry_referrals( be, conn, op, matched )
: NULL;
bdb_entry_return( be, matched );
matched = NULL;
} else {
refs = default_referral;
}
@ -145,6 +148,7 @@ retry: /* transaction retry */
children, NULL, ACL_WRITE );
bdb_entry_return( be, p );
p = NULL;
if ( !rc ) {
Debug( LDAP_DEBUG_TRACE,
@ -267,7 +271,9 @@ return_results:
done:
/* free entry */
if( e != NULL ) bdb_entry_return( be, e );
if( e != NULL ) {
bdb_entry_return( be, e );
}
if( ltid != NULL ) {
txn_abort( ltid );

View file

@ -191,7 +191,7 @@ bdb_idl_insert_key(
data.ulen = sizeof( ids );
data.flags = DB_DBT_USERMEM;
/* fetch the key and grab a write lock */
/* fetch the key for read/modify/write */
rc = db->get( db, tid, key, &data, DB_RMW );
if( rc == DB_NOTFOUND ) {
@ -279,7 +279,7 @@ bdb_idl_delete_key(
data.ulen = sizeof( ids );
data.flags = DB_DBT_USERMEM;
/* fetch the key and grab a write lock */
/* fetch the key for read/modify/write */
rc = db->get( db, tid, key, &data, DB_RMW );
if ( rc != 0 ) {

View file

@ -175,6 +175,7 @@ retry: /* transaction retry */
/* begin transaction */
rc = txn_begin( bdb->bi_dbenv, NULL, &ltid, 0 );
text = NULL;
if( rc != 0 ) {
Debug( LDAP_DEBUG_TRACE,
"bdb_modify: txn_begin failed: %s (%d)\n",
@ -220,6 +221,7 @@ retry: /* transaction retry */
? get_entry_referrals( be, conn, op, matched )
: NULL;
bdb_entry_return( be, matched );
matched = NULL;
} else {
refs = default_referral;
@ -311,7 +313,9 @@ done:
op->o_private = NULL;
}
bdb_entry_return( be, e );
if( e != NULL ) {
bdb_entry_return( be, e );
}
return rc;
}

View file

@ -32,7 +32,7 @@ bdb_modrdn(
Entry *e, *p = NULL;
Entry *matched;
int rc;
const char *text = NULL;
const char *text;
DB_TXN * ltid;
struct bdb_op_info opinfo;
@ -72,8 +72,10 @@ retry: rc = txn_abort( ltid );
}
}
/* begin transaction */
rc = txn_begin( bdb->bi_dbenv, NULL, &ltid, 0 );
text = NULL;
if( rc != 0 ) {
Debug( LDAP_DEBUG_TRACE,
"bdb_delete: txn_begin failed: %s (%d)\n",
@ -114,6 +116,8 @@ retry: rc = txn_abort( ltid );
? get_entry_referrals( be, conn, op, matched )
: NULL;
bdb_entry_return( be, matched );
matched = NULL;
} else {
refs = default_referral;
}
@ -428,6 +432,11 @@ retry: rc = txn_abort( ltid );
/* delete old one */
rc = bdb_dn2id_delete( be, ltid, e->e_ndn, e->e_id );
if ( rc != 0 ) {
switch( rc ) {
case DB_LOCK_DEADLOCK:
case DB_LOCK_NOTGRANTED:
goto retry;
}
rc = LDAP_OTHER;
text = "DN index delete fail";
goto return_results;
@ -443,6 +452,11 @@ retry: rc = txn_abort( ltid );
/* add new one */
rc = bdb_dn2id_add( be, ltid, e->e_ndn, e->e_id );
if ( rc != 0 ) {
switch( rc ) {
case DB_LOCK_DEADLOCK:
case DB_LOCK_NOTGRANTED:
goto retry;
}
rc = LDAP_OTHER;
text = "DN index add failed";
goto return_results;
@ -452,6 +466,11 @@ retry: rc = txn_abort( ltid );
rc = bdb_modify_internal( be, conn, op, ltid, &mod[0], e, &text );
if( rc != LDAP_SUCCESS ) {
switch( rc ) {
case DB_LOCK_DEADLOCK:
case DB_LOCK_NOTGRANTED:
goto retry;
}
goto return_results;
}
@ -460,15 +479,18 @@ retry: rc = txn_abort( ltid );
*/
/* id2entry index */
rc = bdb_id2entry_add( be, ltid, e );
rc = bdb_id2entry_update( be, ltid, e );
if ( rc != 0 ) {
switch( rc ) {
case DB_LOCK_DEADLOCK:
case DB_LOCK_NOTGRANTED:
goto retry;
}
rc = LDAP_OTHER;
text = "entry update failed";
goto return_results;
}
rc = LDAP_SUCCESS;
rc = txn_commit( ltid, 0 );
ltid = NULL;
op->o_private = NULL;

View file

@ -73,7 +73,7 @@ bdb_exop_passwd(
dn = id ? id->bv_val : op->o_dn;
Debug( LDAP_DEBUG_TRACE, "passwd: \"%s\"%s\n",
Debug( LDAP_DEBUG_TRACE, "bdb_exop_passwd: \"%s\"%s\n",
dn, id ? " (proxy)" : "", 0 );
if( dn == NULL || dn[0] == '\0' ) {
@ -83,8 +83,9 @@ bdb_exop_passwd(
}
if (0) {
/* transaction retry */
retry: rc = txn_abort( ltid );
retry: /* transaction retry */
Debug( LDAP_DEBUG_TRACE, "bdb_exop_passwd: retrying...\n", 0, 0, 0 );
rc = txn_abort( ltid );
ltid = NULL;
op->o_private = NULL;
if( rc != 0 ) {
@ -96,6 +97,7 @@ retry: rc = txn_abort( ltid );
/* begin transaction */
rc = txn_begin( bdb->bi_dbenv, NULL, &ltid, 0 );
*text = NULL;
if( rc != 0 ) {
Debug( LDAP_DEBUG_TRACE,
"bdb_exop_passwd: txn_begin failed: %s (%d)\n",
@ -185,6 +187,7 @@ retry: rc = txn_abort( ltid );
case DB_LOCK_DEADLOCK:
case DB_LOCK_NOTGRANTED:
bdb_entry_return( be, e );
e = NULL;
goto retry;
}
*text = "entry update failed";

View file

@ -67,6 +67,7 @@ bdb_referrals(
: NULL;
bdb_entry_return( be, matched );
matched = NULL;
}
if( refs != NULL ) {

View file

@ -107,6 +107,7 @@ bdb_search(
ber_bvecfree( refs );
free( matched_dn );
bdb_entry_return( be, matched );
matched = NULL;
}
return rc;
@ -119,6 +120,7 @@ bdb_search(
conn, op, e );
bdb_entry_return( be, e );
e = NULL;
Debug( LDAP_DEBUG_TRACE, "bdb_search: entry is referral\n",
0, 0, 0 );
@ -162,6 +164,7 @@ bdb_search(
cursor = e->e_id;
bdb_entry_return( be, e );
e = NULL;
if ( candidates[0] == 0 ) {
Debug( LDAP_DEBUG_TRACE, "bdb_search: no candidates\n",
@ -303,6 +306,7 @@ bdb_search(
/* check size limit */
if ( --slimit == -1 ) {
bdb_entry_return( be, e );
e = NULL;
send_search_result( conn, op,
rc = LDAP_SIZELIMIT_EXCEEDED, NULL, NULL,
v2refs, NULL, nentries );
@ -321,6 +325,7 @@ bdb_search(
break;
case -1: /* connection closed */
bdb_entry_return( be, e );
e = NULL;
rc = LDAP_OTHER;
goto done;
}