Always restore op->o_callback in SLAPI overlay - was spinning indefinitely

This commit is contained in:
Luke Howard 2005-08-07 03:13:57 +00:00
parent fa27310d77
commit bba3f62bdc

View File

@ -676,11 +676,10 @@ slapi_over_extended( Operation *op, SlapReply *rs )
rc = (*callback)( pb ); rc = (*callback)( pb );
if ( rc == SLAPI_PLUGIN_EXTENDED_SENT_RESULT ) { if ( rc == SLAPI_PLUGIN_EXTENDED_SENT_RESULT ) {
slapi_pblock_destroy( pb ); goto cleanup;
return rc;
} else if ( rc == SLAPI_PLUGIN_EXTENDED_NOT_HANDLED ) { } else if ( rc == SLAPI_PLUGIN_EXTENDED_NOT_HANDLED ) {
slapi_pblock_destroy( pb ); rc = SLAP_CB_CONTINUE;
return SLAP_CB_CONTINUE; goto cleanup;
} }
assert( rs->sr_rspoid != NULL ); assert( rs->sr_rspoid != NULL );
@ -694,9 +693,13 @@ slapi_over_extended( Operation *op, SlapReply *rs )
if ( rs->sr_rspdata != NULL ) if ( rs->sr_rspdata != NULL )
ber_bvfree( rs->sr_rspdata ); ber_bvfree( rs->sr_rspdata );
slapi_pblock_destroy( pb ); rc = rs->sr_err;
return rs->sr_err; cleanup:
slapi_pblock_destroy( pb );
op->o_callback = cb.sc_next;
return rc;
} }
static int static int
@ -727,10 +730,11 @@ slapi_over_access_allowed(
rc = SLAP_CB_CONTINUE; rc = SLAP_CB_CONTINUE;
} }
op->o_callback = cb.sc_next; if ( !internal_op ) {
if ( !internal_op )
slapi_pblock_destroy( pb ); slapi_pblock_destroy( pb );
}
op->o_callback = cb.sc_next;
return rc; return rc;
} }
@ -807,6 +811,8 @@ slapi_over_acl_group(
if ( e != target ) { if ( e != target ) {
be_entry_release_r( op, e ); be_entry_release_r( op, e );
} }
op->o_callback = cb.sc_next;
} else { } else {
rc = LDAP_NO_SUCH_OBJECT; /* return SLAP_CB_CONTINUE for correctness? */ rc = LDAP_NO_SUCH_OBJECT; /* return SLAP_CB_CONTINUE for correctness? */
} }