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

Re: OpenLDAP behavior with regards to MessageID and the RFC



Michael Torrie writes:

> The RFC 2251 states simply that the MessageID cannot be reused over
> the course of a connection;

No, it doesn't say that:

> each request must have a different MessageID than any outstanding
> request;

Yes.  An outstanding request is a request which either has not yet been
(completely) processed, or for which the server has sent a response
which the client has not yet received.

So the client may reuse a Message ID when it has received the response,
or when it in some other way knows that the request is not waiting to be
processed.  The examples I know of, are:

- The Bind operation (even failed binds) abandons outstanding
  operations, so when you receive a Bind response, you will know that
  there are no outstanding operations.

- The Cancel extended operation defined in
  http://www.ietf.org/internet-drafts/draft-zeilenga-ldap-cancel-11.txt
  works like Abandon, but returns a response so you can see if the
  operation was actually abandoned.

Since there may be other extended operations that cancels outstanding
operations too, perhaps it's best to simply assume that if you see an
apparently outstanding message ID being reused, the client is either
buggy and deserves what it gets, or it knows that the operation has been
successfully abandoned somehow.

> Furthermore, in practice (besides the abort request) are there ever
> multiple requests in progress and does OpenLDAP handle that?

Sure, and the responses do not necessarly arrive in the same order as
the requests were sent.

-- 
Hallvard