Subject: [PATCH] LDAP Content synchronisation fixes
 - Fixed parsing of SyncState: avoid emptying the value
 - Fill in default values in Intermediate::SyncInfo

---
 lib/Net/LDAP/Control/SyncState.pm     |   10 +++++-----
 lib/Net/LDAP/Intermediate/SyncInfo.pm |   21 +++++++++++++++++++++
 2 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/lib/Net/LDAP/Control/SyncState.pm
b/lib/Net/LDAP/Control/SyncState.pm
index e47c78a..569553b 100644
--- a/lib/Net/LDAP/Control/SyncState.pm
+++ b/lib/Net/LDAP/Control/SyncState.pm
@@ -8,7 +8,7 @@ use vars qw(@ISA $VERSION);
 use Net::LDAP::Control;

 @ISA = qw(Net::LDAP::Control);
-$VERSION = "0.01";
+$VERSION = "0.02";

 use Net::LDAP::ASN qw(syncStateValue);
 use strict;
@@ -16,13 +16,13 @@ use strict;
 sub init {
   my($self) = @_;

-  delete $self->{asn};
-
-  unless (exists $self->{value}) {
+  if (exists $self->{value}) {
+    $self->{asn} = $syncStateValue->decode(delete $self->{value});
+  } else {
     $self->{asn} = {
       state => $self->{state} || '',
       entryUUID => $self->{entryUUID} || '',
-      cookie   => $self->{cookie} || '',
+      cookie => defined($self->{cookie}) ? $self->{cookie} : '',
     };
   }

diff --git a/lib/Net/LDAP/Intermediate/SyncInfo.pm
b/lib/Net/LDAP/Intermediate/SyncInfo.pm
index 73d1604..38e6109 100644
--- a/lib/Net/LDAP/Intermediate/SyncInfo.pm
+++ b/lib/Net/LDAP/Intermediate/SyncInfo.pm
@@ -29,6 +29,27 @@ sub init {
     $self->{asn}{syncIdSet} =
       delete $self->{syncIdSet} if exists $self->{syncIdSet};
   }
+  #$self->{asn}{refreshDelete}{refreshDone} defaults to TRUE
+  if(defined($self->{asn}{refreshDelete})) {
+    $self->{asn}{refreshDelete}{refreshDone} =
+      defined($self->{asn}{refreshDelete}{refreshDone})
+      ? $self->{asn}{refreshDelete}{refreshDone}
+      : 1;
+  }
+  #$self->{asn}{refreshPresent}{refreshDone} defaults to TRUE
+  if(defined($self->{asn}{refreshPresent})) {
+    $self->{asn}{refreshPresent}{refreshDone} =
+      defined($self->{asn}{refreshPresent}{refreshDone})
+      ? $self->{asn}{refreshPresent}{refreshDone}
+      : 1;
+  }
+  #$self->{asn}{syncIdSet}{refreshDeletes} defaults to FALSE
+  if(defined($self->{asn}{syncIdSet})) {
+    $self->{asn}{syncIdSet}{refreshDeletes} =
+      defined($self->{asn}{syncIdSet}{refreshDeletes})
+      ? $self->{asn}{syncIdSet}{refreshDeletes}
+      : 0;
+  }

   $self;
 }
-- 
1.5.6.5

Reply via email to