Re: draft-ietf-ldapbis-protocol - controls

Mark Ennis <[email protected]> Fri, 01 Apr 2005 17:09:08 +1000
Newsgroups gmane.ietf.ldapbis
Message-ID <[email protected]>
Kurt D. Zeilenga wrote:
> At 10:14 PM 3/31/2005, Mark Ennis wrote:
> 
>> Kurt D. Zeilenga wrote:
>> 
>>> At 08:49 PM 3/31/2005, Jim Sermersheim wrote:
>>> 
>>> 
>>>> I believe the broad interpretation of "appropriate" leads to
>>>> far more interoperability problems than the narrow view. I'm
>>>> glad to see that you don't believe a control can be partially 
>>>> applied.
>>> 
>>> This, I think, needs to be made crystal clear.
>> 
>> A control which results in modification of multiple objects must
>> not be partially applied, but what about a control that modifies
>> the behaviour of a query?
> 
> 
> Meaning that given a request+control where the control is
> non-critical, the server is to perform either the operation indicated
> by the request OR to perform the operation indicated by
> request+control.
> 
> The server cannot perform a portion of the operation as indicated by
> request+control and a portion of the operation as indicated by
> request.  For instance, it would be inappropriate for a server, in
> response to a search+manageDsaIt request, to only apply the semantics
> indicated by the manageDsaIt to a subset of the results.  The server
> is obligated to apply those semantics across all results or no
> results.
But this does not address a distributed environment where a server 
chaining a request may not know the capabilities of the servers it may 
chain a request to. A search request or a tree delete request may be 
chained to multiple servers, each with different capabilities. The only 
way to enforce the requirements you have stated is to never apply the 
control.

> 
> 
>> A control requesting extra information from each entry in a search
>> result, for example a control to reproduce the behaviour of the
>> modifyRightsRequest in a DAP read operation, may be partially
>> applied, without having any serious implications.
> 
> 
> Different kind of "apply".  If the prescribed semantics of the 
> operation indicated by request+control allow for some of these 
> modifications to be applied to the DIT and others not, that fine. But
> if the prescribed semantics of this operation required that all or
> none of these modifications to be applied to the DIT, then that's
> what has to be done in performance of that operation.
The example I quote is a request for information about what parts of 
entries are modifiable, not a request to modify anything. Again, in a 
distributed environment, servers supporting the control may return a 
control response indicating the information as requested. Servers not 
supporting the control may ignore the control. The application of the 
control in this case would be "partial" and quite safe.

> 
> 
>> To what extent should the allowance to partially apply a control be
>> regulated by the specification controlling the infrastructure, i.e.
>> [protocols], versus the control specification?
> 
> 
> The control specification defines what operation to perform in
> response to a request+control message.
> 
> Where the control is non-critical, the server has a choice of perform
> either: the operation indicated by the request as extended by the
> control or the operation indicated by the request.
> 
> Performing some other operation is not an option.
This assumes complete knowledge by the server of how the control will be 
applied over the entire area affected by the operation. In a distributed 
environment, this knowledge cannot be guaranteed, meaning the above 
requirements can only be met by never doing request+control in these 
circumstances.

> 
> 
>> For example, a control specification for a tree delete control
>> should include a discussion of considerations relating to
>> application of the control in a distributed environment or across
>> different contexts, regardless of what [protocols] may say.
> 
> 
>