[Date Prev][Date Next] [Chronological] [Thread] [Top]

URL dn part [revised]



[rewritten for clarity, please ignore previous version]

As previously discussed,
	ldap://host
	ldap://host/

should be viewed as equivalent.  While the section 4 statement
	If no dn is given, the default is the zero-length DN, ""

is clear that the DN is optional, the ANBF:

       ldapurl    = scheme "://" [hostport] ["/"
                    [dn ["?" [attributes] ["?" [scope]
                    ["?" [filter] ["?" extensions]]]]]]

is somewhat ambiguous.  The URL:
	ldap://host/

can be parsed as dn absent OR dn present but empty.  The fact
that the grammar also allows
	ldap://host

implies that this distinction is somehow important.

This ambiguity could be removed with:
       ldapurl    = scheme "://" [hostport] ["/" dn
                    ["?" [attributes] ["?" [scope]
                    ["?" [filter] ["?" extensions]]]]]]

That is, ldap::/// can only be parsed as having a present
but empty dn part.  I prefer this ABNF production as
it appears to handle optional features more consistently.

To provide additional clarity, I also suggest adding an
additional example:

 The following URLs are equivalent:
	ldap://ldap.example.net
	ldap://ldap.example.net/
	ldap://ldap.example.net/?

 Each refers to the Root DSE on the ldap.example.net server.