]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/accesslog.c
Merge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4
[openldap] / servers / slapd / overlays / accesslog.c
index 2d32f3cc24670c68f4a1d1cd170b1cd227ef2808..8f077e5c40e2c43d6610e7840ec68ba9e9d33721 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2005-2012 The OpenLDAP Foundation.
+ * Copyright 2005-2013 The OpenLDAP Foundation.
  * Portions copyright 2004-2005 Symas Corporation.
  * All rights reserved.
  *
@@ -1457,7 +1457,7 @@ static int accesslog_response(Operation *op, SlapReply *rs) {
        Modifications *m;
        struct berval *b, uuid = BER_BVNULL;
        int i;
-       int logop;
+       int logop, do_graduate = 0;
        slap_verbmasks *lo;
        Entry *e = NULL, *old = NULL, *e_uuid = NULL;
        char timebuf[LDAP_LUTIL_GENTIME_BUFSIZE+8];
@@ -1829,11 +1829,17 @@ static int accesslog_response(Operation *op, SlapReply *rs) {
 
        if (( lo->mask & LOG_OP_WRITES ) && !BER_BVISEMPTY( &op->o_csn )) {
                slap_queue_csn( &op2, &op->o_csn );
+               do_graduate = 1;
        }
 
        op2.o_bd->be_add( &op2, &rs2 );
        if ( e == op2.ora_e ) entry_free( e );
        e = NULL;
+       if ( do_graduate ) {
+               slap_graduate_commit_csn( &op2 );
+               if ( op2.o_csn.bv_val )
+                       op->o_tmpfree( op2.o_csn.bv_val, op->o_tmpmemctx );
+       }
 
 done:
        if ( lo->mask & LOG_OP_WRITES )