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

RE: Ignore ing



Andrew.Briscoe@icl.com writes:
> (...) LBER_SEEK_TAGS_MODE (...)
> If this new option has been used then calls to
> ber_scanf() will seek out the tags specified in the
> ber_scanf format string passively skipping those that do
> not satisfy the ber_scanf request.
> 
> This seemed to be the easiest way to satisfy the
> statement in rfc2251. As it has no external impact on
> the LDAP API look and feel and it does not prejudice
> v2 LDAP functionality.

I assume this means you set the flag for ldapv3 clients but not v2
clients?  That sounds quite good to me.

One detail if you are trying to get it _really_ perfect: If an
unrecognized tag occurs before the ldap version in the bindRequest, but
the version is < 3, the Really Correct behaviour is probably to return
an error.  Which means you must set a flag if some elements were skipped
due to unrecognized tags.  (Either in the BerElement, or by reading the
initial part of the request "by hand".)

(Actually, I wouldn't care if LDAPv2 also ignored unrecognized elements,
I'd be satisfied to assume the client wanted what he seemed to ask for.
There is almost no _correct_ use of LDAPv2 anyway; people get at least
the charset wrong.  UTF-8/iso8859-1 instead of T.61.)


How do you specify the tags to skip?  I imagine a format like this:

'r'     Skip elements with unrecognized tags.
        The argument is a ber_tag_t* which points to an array of
        the recognized tags, terminated by LBER_DEFAULT.

'R'     For convenience: as 'r', but takes a single ber_tag_t.

and a corresponding function
    ber_skip_to_tags(BerElement *ber, const ber_tag_t *recognized_tags)

-- 
Hallvard