Pierangelo Masarati wrote:
With the relay,massage combination, slapd ends up looking for a non-existent db key (only when searching is done through the real naming context)
What does this mean? If the virtual naming context is "" and you search using the real naming context, the virtual database shouldn't come into play at all.
I think I've tracked down the problem to this one:
When search is done against the real naming context, asking for hasSubordinates, slapd rewrites the searchDN/key to look for in BDB in very odd (and obviously wrong) way. (see logs below)
Note that there is no problem when searches are done through the virtual naming context and when searches are done in the real naming context with the relay database in slapd.conf commented out.
I can't be sure if this is another side effect of the empty suffix in the virtual naming context, a new issue totally unrelated with the relay backend, or just a result of a faulty configuration (e.g. ACLs)
SRCH "ou=People,dc=contacts,dc=uoa,dc=gr" 0 0 1 0 0 begin get_filter PRESENT end get_filter 0 filter: (objectClass=*) => get_ctrls => get_ctrls: oid="2.16.840.1.113730.3.4.2" (noncritical) <= get_ctrls: n=1 rc=0 err="" attrs: hasSubordinates objectClass
conn=0 op=2 SRCH base="ou=People,dc=contacts,dc=uoa,dc=gr" scope=0 deref=0 filter="(objectClass=*)" conn=0 op=2 SRCH attr=hasSubordinates objectClass slap_global_control: unavailable control: 2.16.840.1.113730.3.4.2 ==> limits_get: conn=0 op=2 dn="uid=nvoutsin,ou=people,dc=contacts,dc=uoa,dc=gr" [rw] searchDN: "ou=People,dc=contacts,dc=uoa,dc=gr" -> "ou=People,dc=contacts,dc=uoa,dc=gr,ou=People,dc=contacts,dc=uoa,dc=gr"
dnPrettyNormal:
<ou=People,dc=contacts,dc=uoa,dc=gr,ou=People,dc=contacts,dc=uoa,dc=gr> <<< dnPrettyNormal: <ou=People,dc=contacts,dc=uoa,dc=gr,ou=People,dc=contacts,dc=uoa,dc=gr>, <ou=people,dc=contacts,dc=uoa,dc=gr,ou=people, dc=contacts,dc=uoa,dc=gr> str2filter "(objectClass=*)" begin get_filter PRESENT end get_filter 0 => bdb_search
bdb_dn2entry("ou=people,dc=contacts,dc=uoa,dc=gr,ou=people,dc=contacts,dc=uoa,dc=gr") => bdb_dn2id("dc=gr,ou=people,dc=contacts,dc=uoa,dc=gr") <= bdb_dn2id: get failed: DB_NOTFOUND: No matching key/data pair found (-30989) entry_decode: "ou=People,dc=contacts,dc=uoa,dc=gr"