My feeling is that it is safer to leave the current text and force future extension implementations to specify their own encoding rules when those of Section 5.1 are overly restrictive.
>>> Hallvard B Furuseth <email@example.com> 3/9/04 6:52:35 AM >>>
> 5.1. Protocol Encoding
> The protocol elements of LDAP SHALL be encoded for exchange using the
> Basic Encoding Rules [BER] of [ASN.1] with the following
> - If a value of a type is its default value, it is absent. Only some
> BOOLEAN and INTEGER types have default values in this protocol
This restriction can be impractical to implement for default values of
complex types. It might be better if it only applied to simple types
That's not relevant for the core protocol, but can be for controls and
extended requests/responses whose values are encoded as ASN.1:
When a controlValue is defined in terms
of ASN.1, and BER encoded according to Section 5.1, it also follows
the extensibility rules in Section 4.
4.12. Extended Operation
Values that are defined in terms of ASN.1 and BER encoded
according to Section 5.1, also follow the extensibility rules in
Note that these texts do not say that ASN.1 values need to obey these
restrictions; the extensions could instead define their own restrictions
without the one I quoted. But I suspect extensions that do use ASN.1
with complex defaults would prefer to do just that, so it would be
simpler if they didn't have to. OTOH, changing this now will change
the spec of such extensions that already depend on this restriction.
So I'm not sure what is best.