]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-mdb/modify.c
ITS#8360 fix ad info after failed txn
[openldap] / servers / slapd / back-mdb / modify.c
index ada93cda11fcb7d94413a8733a17db4d1f175e36..d3853f5ca1578b2cf8dcf7c11865406ac948d24d 100644 (file)
@@ -458,6 +458,7 @@ mdb_modify( Operation *op, SlapReply *rs )
        LDAPControl **postread_ctrl = NULL;
        LDAPControl *ctrls[SLAP_MAX_RESPONSE_CONTROLS];
        int num_ctrls = 0;
+       int numads = mdb->mi_numads;
 
 #ifdef LDAP_X_TXN
        int settle = 0;
@@ -667,12 +668,15 @@ txnReturn:
                LDAP_SLIST_REMOVE( &op->o_extra, &opinfo.moi_oe, OpExtra, oe_next );
                opinfo.moi_oe.oe_key = NULL;
                if( op->o_noop ) {
+                       mdb->mi_numads = numads;
                        mdb_txn_abort( txn );
                        rs->sr_err = LDAP_X_NO_OPERATION;
                        txn = NULL;
                        goto return_results;
                } else {
                        rs->sr_err = mdb_txn_commit( txn );
+                       if ( rs->sr_err )
+                               mdb->mi_numads = numads;
                        txn = NULL;
                }
        }
@@ -715,6 +719,7 @@ done:
 
        if( moi == &opinfo ) {
                if( txn != NULL ) {
+                       mdb->mi_numads = numads;
                        mdb_txn_abort( txn );
                }
                if ( opinfo.moi_oe.oe_key ) {