]> git.sur5r.net Git - openldap/commitdiff
ITS#8752 accesslog: cleanup should only be called on failures
authorHoward Chu <hyc@openldap.org>
Sat, 14 Oct 2017 10:22:53 +0000 (11:22 +0100)
committerQuanah Gibson-Mount <quanah@openldap.org>
Tue, 17 Oct 2017 17:04:39 +0000 (10:04 -0700)
servers/slapd/overlays/accesslog.c

index a2675aefca690930bdd19793d6213048f9c90cdd..3201fa8a389dc86404f29a455e31f4e78e1a63e4 100644 (file)
@@ -1943,7 +1943,7 @@ accesslog_mod_cleanup( Operation *op, SlapReply *rs )
 
        op->o_tmpfree( sc, op->o_tmpmemctx );
 
-       if ( on ) {
+       if ( on && rs->sr_err != LDAP_SUCCESS ) {
                BackendInfo *bi = op->o_bd->bd_info;
                op->o_bd->bd_info = (BackendInfo *)on;
                accesslog_response( op, rs );
@@ -1990,11 +1990,11 @@ accesslog_op_mod( Operation *op, SlapReply *rs )
        }
                        
        if ( doit ) {
-               slap_callback *cb = op->o_tmpcalloc( 1, sizeof( slap_callback ), op->o_tmpmemctx ), *cb2;
+               slap_callback *cb = op->o_tmpcalloc( 1, sizeof( slap_callback ), op->o_tmpmemctx );
                cb->sc_cleanup = accesslog_mod_cleanup;
                cb->sc_private = on;
-               for ( cb2 = op->o_callback; cb2->sc_next; cb2 = cb2->sc_next );
-               cb2->sc_next = cb;
+               cb->sc_next = op->o_callback;
+               op->o_callback = cb;
 
 #ifdef RMUTEX_DEBUG
                Debug( LDAP_DEBUG_SYNC,