[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: draft-ietf-ldapbis-protocol - controls
- To: Jim Sermersheim <jimse@novell.com>
- Subject: Re: draft-ietf-ldapbis-protocol - controls
- From: Howard Chu <hyc@highlandsun.com>
- Date: Tue, 29 Mar 2005 10:45:19 -0800
- Cc: ietf-ldapbis@OpenLDAP.org
- In-reply-to: <s249358b.025@sinclair.provo.novell.com>
- References: <s249358b.025@sinclair.provo.novell.com>
- User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b2) Gecko/20050318
Jim Sermersheim wrote:
>>> Howard Chu hyc@highlandsun.com> 3/27/05 1:09 PM >>
<mailto:hyc@highlandsun.com> 3/27/05 1:09 PM >>>
<snip>
>The first problem is that there is no way to indicate that a control is
>only supported within specific contexts, as opposed to server-wide.
>Since there is only the single rootDSE to use for advertising features,
>it would be reasonable for clients to assume those features are
>server-wide but in this case they are not.
The same problem applies to servers which chain operations. To me, a
server with multiple backends could be viewed as a server chaining to
multiple other servers. Or a server front ending a lot of other
(backend) servers.
I don't think the advertisement of supportedControls,
supportedExtensions or supportedFeatures can ever be completely relied
on to represent the entire set of services when the DSA fronts multiple
backends or chains to other DSAs.
OK, that statement is clear, but it is not helpful for client implementors.
>The interesting points I draw from this are:
>3) contrapositive to (1), controls with Criticality FALSE may NOT
>cause an otherwise valid request to fail with an error response
Sure, if the server cannot service the control for whatever reason, it
will fail with an error response (see example below).
>4) the Abandon request is also defined to have no response, and thus
>should have the same exception.
The outcome of Abandon is and always has been indeterminate. The outcome
of Unbind was intended to be deterministic. While I agree that adding a
critical control to an Abandon request seems to have very little use, it
could be argued that it gives the server an extra hint at how (or
whether) to apply the abandon request.
>If (3) is true then the problem that prompted me to write this message
>is solved. Regardless, (4) probably ought to be clarified.
3 is not true because the control itself may cause a number of problems
which can cause failure as applied to the operation. Note that some
implementations restrict access to some controls like the Virtual List
View control. In the case where the server recognizes the control, it's
appropriate for the operation, but the user doesn't have sufficient
rights to apply it, the operation fails.
This really doesn't make any sense. Again, in this same paragraph
talking about criticality:
A value of TRUE indicates that it is unacceptable to perform
the operation without applying the semantics of the control.
The logical inference to draw from this is that a value of FALSE
indicates that it *is* acceptable to perform the operation without
applying the control.
Think about what an actual client is going to do with a non-critical
control - if the request with the control fails, the client is just
going to have to re-issue the request without the control anyway. The
most logical behavior for the server is to ignore any non-critical
control that cannot be applied to the operation regardless of reason.
The behavior you're describing here just makes the use of controls more
inefficient, requiring more transaction roundtrips to get something that
the client writer thought "would be nice, but isn't essential."
Clearly if the control is marked Critical, all of these checks and error
responses are essential, and the client explicitly wants to be told if
the request cannot be processed exactly as requested. But when the
control is not marked Critical, the client doesn't really care whether
the control is applied so long as the request is processed.
--
-- Howard Chu
Chief Architect, Symas Corp. Director, Highland Sun
http://www.symas.com http://highlandsun.com/hyc
Symas: Premier OpenSource Development and Support