steffen: server/perl-kolab/Kolab-LDAP-Backend-slurpd slurpd.pm, 1.8, 1.9
cvs at intevation.de
cvs at intevation.de
Fri Aug 13 02:34:27 CEST 2004
Author: steffen
Update of /kolabrepository/server/perl-kolab/Kolab-LDAP-Backend-slurpd
In directory doto:/tmp/cvs-serv17375/Kolab-LDAP-Backend-slurpd
Modified Files:
slurpd.pm
Log Message:
fix for long lasting bug that causes kolabd to loop when slapd is stopped
Index: slurpd.pm
===================================================================
RCS file: /kolabrepository/server/perl-kolab/Kolab-LDAP-Backend-slurpd/slurpd.pm,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- slurpd.pm 15 Jul 2004 01:10:11 -0000 1.8
+++ slurpd.pm 13 Aug 2004 00:34:25 -0000 1.9
@@ -273,9 +273,15 @@
Kolab::log('SD', 'Waiting for LDAP updates');
- for ($ready = 1; $ready; $ready = $select->can_read(1)) {
+ for ($ready = 1; $conn && $ready; $ready = $select->can_read(1)) {
Kolab::log('SD', 'Reading ASN', KOLAB_DEBUG);
- $offset = asn_read($conn, $pdu, $offset);
+ my $newoffset = asn_read($conn, $pdu, $offset);
+ if( !$conn->connected() or $offset == $newoffset ) {
+ Kolab::log('SD', 'Connection closed', KOLAB_DEBUG);
+ $conn->close;
+ undef $conn;
+ }
+ $offset = $newoffset;
defined($offset) or $offset = 0;
sleep 1;
}
@@ -291,14 +297,17 @@
undef $pdu;
SWITCH: {
- if (/bindRequest/) { $pdu = responseBind($request); last SWITCH; }
+ if (/^bindRequest/) { $pdu = responseBind($request); last SWITCH; }
if (/addRequest/) { $pdu = responseAdd($request); $changes = 1; last SWITCH; }
if (/delRequest/) { $pdu = responseDel($request); $changes = 1; last SWITCH; }
if (/modifyRequest/) { $pdu = responseMod($request); $changes = 1; last SWITCH; }
if (/modDNRequest/) { $pdu = responseModDN($request); $changes = 1; last SWITCH; }
- $conn->close;
- undef $conn;
+ if( $conn ) {
+ Kolab::log('SD', 'Unknown request, connection closed', KOLAB_DEBUG);
+ $conn->close;
+ undef $conn;
+ }
}
}
More information about the commits
mailing list