goto done;
}
- }
+ /* change the entry itself */
+ rc = bdb_id2entry_update( be, ltid, e );
+ if( rc != 0 ) {
+ switch(rc) {
+ case DB_LOCK_DEADLOCK:
+ case DB_LOCK_NOTGRANTED:
+ bdb_entry_return( be, e );
+ e = NULL;
+ goto retry;
+ }
+ *text = "entry update failed";
+ rc = LDAP_OTHER;
+ }
- /* change the entry itself */
- rc = bdb_id2entry_update( be, ltid, e );
- if( rc != 0 ) {
- switch(rc) {
- case DB_LOCK_DEADLOCK:
- case DB_LOCK_NOTGRANTED:
- bdb_entry_return( be, e );
- e = NULL;
- goto retry;
+ if( bdb->bi_txn && rc == 0 ) {
+ rc = txn_commit( ltid, 0 );
+ ltid = NULL;
}
- *text = "entry update failed";
- rc = LDAP_OTHER;
- }
+ op->o_private = NULL;
- if( bdb->bi_txn && rc == 0 ) {
- rc = txn_commit( ltid, 0 );
- ltid = NULL;
+ if( rc == LDAP_SUCCESS ) {
+ replog( be, op, &e->e_name, &e->e_nname, &ml );
+ }
}
- op->o_private = NULL;
done:
if( e != NULL ) {
rc = LDAP_OTHER;
}
- replog( be, op, e->e_dn, e->e_ndn, &ml );
+ if( rc == LDAP_SUCCESS ) {
+ replog( be, op, &e->e_name, &e->e_nname, &ml );
+ }
}
-
+
done:
if( e != NULL ) {
cache_return_entry_w( &li->li_cache, e );
return NULL;
}
-void replog( Backend *be, Operation *op, char *dn, char *ndn, void *change)
+void replog( Backend *be, Operation *op,
+ struct berval *dn, struct berval *ndn, void *change)
{
assert(0);
}