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

referral mess in HEAD



There are still a bunch of problems with referrals, I still got into a hang
in ldapsearch waiting in select after all outstanding requests had
completed. There is also an abort situation, which appears to be due to
mixing V2 and V3 referrals in response to a single query. (The V2 referrals
come from the global referral directive in slapd.conf.) Shouldn't slapd be
returning the global referral in V3 format on a V3 query?

I created this test environment based on email from Stephan Austermühle
[au@hcsd.de]:

- Server 1 (Port 389):
 Base DN: ou=hamburg,o=eg,o=airbus
 Global Referral: ldap://127.0.0.1:10389

- Server 2 (Port 390):
 Base DN: ou=bremen,o=eg,o=airbus
 Global Referral: ldap://127.0.0.1:10389

- Server 3 (Port 10389):
 Base DN: o=eg,o=airbus
 Global Referral: ldap://127.0.0.1:20389
 This server has two smart referrals set:
 (1) dn: ou=bremen,o=eg,o=airbus
 ref: ldap://127.0.0.1:390/ou=bremen,o=eg,o=airbus
 (2) dn: ou=hamburg,o=eg,o=airbus
 ref: ldap://127.0.0.1:389/ou=hamburg,o=eg,o=airbus

 - Server 4 (Port 20389):
 Base DN: o=airbus
 This server has one smart referral set:
 dn: ou=eg,o=airbus
 ref: ldap://127.0.0.1:10389/ou=eg,o=airbus

Here are some results I've obtained so far
 ldapsearch -C -x
 -H ldap://:20389
   -b o=airbus		returns full tree minus ou=hamburg branch
   -b o=eg,o=airbus     returns o=eg,o=airbus subtree minus ou=hamburg
branch
   -b ou=bremen,o=eg,o=airbus		returns branch correctly
   -b ou=hamburg,o=eg,o=airbus	returns branch correctly
 -H ldap://:10389
   -b o=airbus		returns o=airbus, then abort at sockbuf.c:82
   -b o=eg,o=airbus	returns subtree minus ou=hamburg then hangs
   -b ou=bremen,o=eg,o=airbus		returns branch correctly
   -b ou=hamburg,o=eg,o=airbus	returns branch correctly
 -H ldap://:390
   -b o=airbus		returns o=airbus, then abort at sockbuf.c:82
   -b o=eg,o=airbus	returns subtree minus ou=hamburg branch
   -b ou=bremen,o=eg,o=airbus		returns branch correctly
   -b ou=hamburg,o=eg,o=airbus	returns branch correctly
 -H ldap://:389  same as ldap://:390

 ldapsearch -C -x -P 2 produces consistent results for all combinations,
it's
the exact same as the "-H ldap://:20389"; case above.

So, my fix for the ldapsearch hang is wrong, and there's something else
going on as well with V2/V3 mixing, and some referrals don't get chased (due
to my hang patch I believe). Helpful ideas, anyone?

  -- Howard Chu
  Chief Architect, Symas Corp.       Director, Highland Sun
  http://www.symas.com               http://highlandsun.com/hyc
  Symas: Premier OpenSource Development and Support