develooper Front page | perl.ldap | Postings from June 2008

Re: LDAP Content Synchronization Operation (rfc4533)

Thread Previous
From:
Mathieu PARENT
Date:
June 17, 2008 13:39
Subject:
Re: LDAP Content Synchronization Operation (rfc4533)
Message ID:
960738410806171339r5bf007cas255dc55fbe1b88fd@mail.gmail.com
On Tue, Jun 17, 2008 at 5:16 PM, Graham Barr <gbarr@pobox.com> wrote:
> On Jun 14, 2008, at 2:01 PM, Mathieu PARENT wrote:
>>
>> Hi,
>>
>> I have implemented LDAP Content Synchronization Operation (rfc4533) in
>> perl-ldap (See the attached patch). This is used by the OpenLDAP
>> server and provide features similar to Persistent Searches in a more
>> consistent way.
>>
>> This is my first try in this code, any feedback is welcome.
>
> It looks good. However the makefile is generated so we do not need a patch
> for that. And you should add your new files to the MANIFEST file.

Thanks. I've corrected this.

>> I don't know how to handle the Sync Info Message which is an LDAP
>> Intermediate Response Message (see 2.5 in RFC). perl-ldap doesn't
>> seems to support intermediate responses in response to LDAP::Search.
>> What is the way to correct this ?
>
> I have not read the RFC, but I assume this does not signal the end of the
> search
> operation, so the callback should be called.

Yes


> What is the content of the
> Intermediate Response Message ? There should probably be a class added to
> represent
> this message and that gets passed to the callback in the same way we do for
> entries and references.

I've added a Net::LDAP::Intermediate class (inspired by
net::LDAP::Control) with the ability to expand (for example
Net::LDAP::Intermediate::SyncInfo), see attached patch (work in
progress). This class is used from Net::LDAP::Search->decode().

The problem is that Convert::ASN1 doesn't understand this quite
complex BER script :

    syncInfoValue ::= CHOICE {
          newcookie      [0] syncCookie,
          refreshDelete  [1] SEQUENCE {
              refreshDeleteCookie         syncCookie OPTIONAL,
              refreshDeleteDone    BOOLEAN -- DEFAULT TRUE
          }
          refreshPresent [2] SEQUENCE {
              refreshDeletecookie         syncCookie OPTIONAL,
              refreshDeleteDone    BOOLEAN -- DEFAULT TRUE
          }
          syncIdSet      [3] SEQUENCE {
              cookie         syncCookie OPTIONAL,
              refreshDeletes BOOLEAN, -- DEFAULT FALSE
              syncUUIDs      SET OF syncUUID
          }
    }

with the attached "out" (which is working with enber/unber). Any idea
of where the problem comes from?

>
> Before I add this, I want to make the switch to Git from SVN. This will
> allow
> me to give better attribution to those who make contributions and also for
> people
> to contribute using git's mail patch mechanism which makes things easier.

I'll use git soon.

> I have converted the current SVN repository which you can find here
>
>  http://git.goingon.net/gitweb?p=perl-ldap.git;a=summary
>
> Graham.
>
>



Mathieu Parent


Thread Previous


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About