From d68041ce50a1a0444d65b8b8e5081870da3ab058 Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Tue, 25 Jan 2005 18:09:59 +0000 Subject: [PATCH] Revert part of last (two) commits. Need additional infrastructure first. --- servers/slapd/backend.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/servers/slapd/backend.c b/servers/slapd/backend.c index d936a0d3a3..84724bb588 100644 --- a/servers/slapd/backend.c +++ b/servers/slapd/backend.c @@ -803,18 +803,22 @@ backend_check_controls( if( ctrls ) { for( ; *ctrls != NULL ; ctrls++ ) { - if( !ldap_charray_inlist( op->o_bd->be_controls, - (*ctrls)->ldctl_oid ) ) + if( (*ctrls)->ldctl_iscritical && !ldap_charray_inlist( + op->o_bd->be_controls, (*ctrls)->ldctl_oid ) ) { /* Per RFC 2251 (and LDAPBIS discussions), if the control * is recognized and appropriate for the operation (which * we've already verified), then the server should make * use of the control when performing the operation - * (without regard to criticality). + * (regardless of the criticality of the control). * * Here we find that operation extended by the control * is not unavailable in a particular context, hence the * return of unwillingToPerform. + * + * FIXME: As noted above, this check should be done + * regardless of the criticality of the control. The + * frontend infrastructure doesn't (yet) support this. */ rs->sr_text = "control unavailable in context"; rs->sr_err = LDAP_UNWILLING_TO_PERFORM; -- 2.39.5