Look for our callback to pop, don't just do it blindly

This commit is contained in:
Howard Chu 2009-08-19 08:05:18 +00:00
parent 3de89b4201
commit 99341bb367

View File

@ -699,7 +699,7 @@ over_op_func(
slap_overinfo *oi; slap_overinfo *oi;
slap_overinst *on; slap_overinst *on;
BackendDB *be = op->o_bd, db; BackendDB *be = op->o_bd, db;
slap_callback cb = {NULL, over_back_response, NULL, NULL}; slap_callback cb = {NULL, over_back_response, NULL, NULL}, **sc;
int rc = SLAP_CB_CONTINUE; int rc = SLAP_CB_CONTINUE;
/* FIXME: used to happen for instance during abandon /* FIXME: used to happen for instance during abandon
@ -719,9 +719,14 @@ over_op_func(
op->o_callback = &cb; op->o_callback = &cb;
rc = overlay_op_walk( op, rs, which, oi, on ); rc = overlay_op_walk( op, rs, which, oi, on );
for ( sc = &op->o_callback; *sc; sc = &(*sc)->sc_next ) {
if ( *sc == &cb ) {
*sc = cb.sc_next;
break;
}
}
op->o_bd = be; op->o_bd = be;
op->o_callback = cb.sc_next;
return rc; return rc;
} }