Howard Chu wrote:
Erik van Oosten wrote:
> Still, this interpretation can not be correct. When I run my sync client
> program against OpenLDAP (2.3.36), and then restart it after the refresh
> stage with the last received cookie (note: the DIT remains
> unchanged), the
> first message is exactly that SyncInfoMessage of refreshPresent with
> refreshDone set to TRUE. Using our interpretation I should now delete
> client content! Since the DIT was not changed this is clearly wrong. (By
> the way the new server cookie is the same as the initial cookie, but
> depending on this is tricky; the client should never interpret the
Are you still talking about refreshAndPersist mode, or refreshonly?
I am talking
about a refreshAndPersist operation (otherwise I would not
get a syncInfoMessage with refreshDone set to true). Mode refreshOnly is
working as expected.
There appears to be a detail missing from the RFC - when no changes
have occurred since the last refresh, for refreshOnly the provider
will send a Sync Done refreshDeletes control with no cookie. I.e., if
the state hasn't changed, the cookie would be identical, so there's no
need to send it back to the consumer.
You say Sync Done refreshDeletes, that is
indeed what you get with
refreshOnly. However, with refreshAndPersist you get a single
syncInfoMessage of refresh*Present*. Shall I report this as a bug?
My interpretation of 'no cookie' in the SyncDone/SyncInfoMessage was to
use no initial cookie in the next synchronization. But your
interpretation is probably better indeed.
For refreshAndPersist it always sends the cookie back. I think this
may be a bug, we probably shouldn't be sending the cookie in this case
either. So, you *should* be able to assume that no changes have
occurred at all when no cookie is returned.
Okay thanks, I'll use that
assumption. I'll also use the assumption that
if the cookie is the same, no changes have occurred.
Erik van Oosten