mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-02-05 13:40:08 +08:00
Always restore op->o_callback in SLAPI overlay - was spinning indefinitely
This commit is contained in:
parent
fa27310d77
commit
bba3f62bdc
@ -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? */
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user