steffen: server/perl-kolab/Kolab-LDAP-Backend-slurpd slurpd.pm.in, 1.1, 1.2

cvs at intevation.de cvs at intevation.de
Mon Apr 10 00:49:45 CEST 2006


Author: steffen

Update of /kolabrepository/server/perl-kolab/Kolab-LDAP-Backend-slurpd
In directory doto:/tmp/cvs-serv5187/Kolab-LDAP-Backend-slurpd

Modified Files:
	slurpd.pm.in 
Log Message:
Fix for Issue1194 (kolabd quota performance) plus a timing fix for the actual LDAP replication client in kolabd

Index: slurpd.pm.in
===================================================================
RCS file: /kolabrepository/server/perl-kolab/Kolab-LDAP-Backend-slurpd/slurpd.pm.in,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- slurpd.pm.in	17 Dec 2005 21:45:32 -0000	1.1
+++ slurpd.pm.in	9 Apr 2006 22:49:43 -0000	1.2
@@ -274,19 +274,22 @@
             my $ready;
             my $offset = 0;
 
-            if (!($select->can_read(1)) && $changes) {
-                $changes = 0;
-                Kolab::log('SD', 'Change detected w/ no pending LDAP messages; reloading services if needed');
-                Kolab::LDAP::sync;		
-                Kolab::log('SD', 'Running kolabconf');
-                system("@sbindir@/kolabconf") == 0
-		  or Kolab::log('SD', "Failed to run kolabconf: $?", KOLAB_ERROR);
-                Kolab::log('SD', 'Kolabconf complete');
+            if (!($select->can_read(0)) && $changes) {
+	        Kolab::log('SD', 'Change detected w/ no pending LDAP messages; waiting a second...');
+		if( !($select->can_read(1)) ) {
+		  $changes = 0;
+		  Kolab::log('SD', 'Change detected w/ no pending LDAP messages; reloading services if needed');
+		  Kolab::LDAP::sync;		
+		  Kolab::log('SD', 'Running kolabconf');
+		  system("@sbindir@/kolabconf") == 0
+		    or Kolab::log('SD', "Failed to run kolabconf: $?", KOLAB_ERROR);
+		  Kolab::log('SD', 'Kolabconf complete');
+		}
             }
 
             Kolab::log('SD', 'Waiting for LDAP updates');
 
-            for ($ready = 1; $conn && $ready; $ready = $select->can_read(1)) {
+            for ($ready = 1; $conn && $ready; $ready = $select->can_read(0)) {
                 Kolab::log('SD', 'Reading ASN', KOLAB_DEBUG);
                 my $newoffset = asn_read($conn, $pdu, $offset);
 		if( !$conn->connected() or $offset == $newoffset ) {
@@ -296,7 +299,6 @@
 		}
 		$offset = $newoffset;
                 defined($offset) or $offset = 0;
-                sleep 1;
             }
 
             if ($pdu) {





More information about the commits mailing list