[Date Prev][Date Next] [Chronological] [Thread] [Top]

back-ldap bug?



I've got a setup of two OpenLDAP servers. One is master, the other runs two 
instances of slapd, one replicates using syncrepl listening on port 10389 and 
the other on port 389 using back-ldap proxies to localhost:10389, mainly for 
referral chasing.

If I send a modification operation to the back-ldap instance, I get this 
error:
ldap_initialize( ldap://localhost )
replace dbkImageVersion:
        2
replace objectclass:
        dbkCarrierClass
        dbkWorkstation
modifying entry "cn=pc00108,ou=client,ou=test,o=testing,c=de"
ldapmodify: update failed: cn=pc00108,ou=client,ou=test,o=testing,c=de
ldap_modify: Object class violation (65)
        additional info: no structural object class provided

If I send the same modification directly to the master, the operation is 
successful:
ldap_initialize( ldap://192.168.135.10 )
replace dbkImageVersion:
        2
replace objectclass:
        dbkCarrierClass
        dbkWorkstation
modifying entry "cn=pc00108,ou=client,ou=test,o=testing,c=de"
modify complete

The LDIF used for modify:
dn: cn=pc00108,ou=client,ou=test,o=testing,c=de
changetype: modify
replace: dbkImageVersion
dbkImageVersion: 2
-
replace: objectclass
objectclass: dbkCarrierClass
objectclass: dbkWorkstation

Command used for modify through proxy:
ldapmodify -x -v -D "uid=foo,ou=user,o=testing,c=de" -w secret -h localhost -f 
mod108.ldif

Command used for modify on master directly:
ldapmodify -x -v -D "uid=foo,ou=user,o=testing,c=de" -w secret -h 
192.168.135.10 -f mod108.ldif

Here comes the funny parts of ethereal dumps of both operations captured on 
the master (Message Length differs by one, but is wrong here because I 
changed the base for this posting):

Through back-ldap:
Lightweight Directory Access Protocol, Modify Request
    Message Id: 3
    Message Type: Modify Request (0x06)
    Message Length: 177
    Response In: 9
    Distinguished Name: cn=pc00108,ou=client,ou=test,o=testing,c=de
    Replace: dbkImageVersion
        Value: 2
    Replace: objectClass
        Value: dbkWorkstation
        Value: dbkWorkstation

Direct:
Lightweight Directory Access Protocol, Modify Request
    Message Id: 2
    Message Type: Modify Request (0x06)
    Message Length: 178
    Distinguished Name: cn=pc00108,ou=client,ou=test,o=testing,c=de
    Replace: dbkImageVersion
        Value: 2
    Replace: objectclass
        Value: dbkCarrierClass
        Value: dbkWorkstation

The weird thing is that through back-ldap it sends the same value for 
objectClass twice. May this be a bug in the back-ldap code?

This seems to be related to ITS# 1540 and 1547, but they are from 2002 and 
refer to 2.0.x. I'm using SLES9 and recent packages (openldap2-2.2.6-37.35)

-- 
Stephan Dühr
dass IT GmbH
http://www.dass-IT.de