diff --git a/servers/slapd/backover.c b/servers/slapd/backover.c index cc13d77c28..a749fba919 100644 --- a/servers/slapd/backover.c +++ b/servers/slapd/backover.c @@ -716,7 +716,8 @@ int overlay_op_walk( if ( rc == LDAP_UNWILLING_TO_PERFORM ) { slap_callback *sc_next; cleanup: - for ( ; op->o_callback; op->o_callback = sc_next ) { + for ( ; op->o_callback && op->o_callback->sc_response != + over_back_response; op->o_callback = sc_next ) { sc_next = op->o_callback->sc_next; if ( op->o_callback->sc_cleanup ) { op->o_callback->sc_cleanup( op, rs ); diff --git a/servers/slapd/overlays/ppolicy.c b/servers/slapd/overlays/ppolicy.c index 187feee886..e13c33a866 100644 --- a/servers/slapd/overlays/ppolicy.c +++ b/servers/slapd/overlays/ppolicy.c @@ -940,7 +940,6 @@ ppolicy_ctrls_cleanup( Operation *op, SlapReply *rs ) if ( ppb->send_ctrl ) { ctrls_cleanup( op, rs, ppb->oldctrls ); } - op->o_callback->sc_cleanup = NULL; return SLAP_CB_CONTINUE; }