Hello, we tested this (HEAD code):
1. ITS 6565 seems to be fixed: Chaining works now with correct search base.
2. If the target server of the chaining is not reachable we get "no such object", followed by a SIGSEV (core dump). Stack Trace:
#0 0x0000000400040004 in ?? () #1 0x000000000042eb60 in slap_cleanup_play (op=0x7fffe40028c0, rs=0x7ffff1f70940) at result.c:436 #2 0x000000000043145a in send_ldap_response (op=0x7fffe40028c0, rs=0x7ffff1f70940) at result.c:621 #3 0x00000000004320cd in slap_send_ldap_result (op=0x7fffe40028c0, rs=0x7ffff1f70940) at result.c:750 #4 0x00000000004e2154 in ldap_chain_response (op=0x7fffe40028c0, rs=0x7ffff1f70940) at chain.c:1132 #5 0x00000000004833f8 in over_back_response (op=0x7fffe40028c0, rs=0x7ffff1f70940) at backover.c:237 #6 0x000000000042eace in slap_response_play (op=0x7fffe40028c0, rs=0x7ffff1f70940) at result.c:402 #7 0x0000000000431437 in send_ldap_response (op=0x7fffe40028c0, rs=0x7ffff1f70940) at result.c:476 #8 0x00000000004320cd in slap_send_ldap_result (op=0x7fffe40028c0, rs=0x7ffff1f70940) at result.c:750 #9 0x0000000000497adc in dnssrv_back_referrals (op=0x7fffe40028c0, rs=0x7ffff1f70940) at referral.c:118
0x0000000400040004 is the address referenced in op->o_callback->sc_cleanup(op,rs) .
Regards, Jochen.
Am 05.09.2010 18:01, schrieb masarati@aero.polimi.it:
Hello,
Hi. I don't have time to work at this right now, but I think the solution would be to modify slapo-chain(5) so that when a referral's DN is "" and the DN in the original request is not "", to use that DN instead. The original request DN can be found in op->o_req_dn.
we tested the following - with success:
Just replace in servers/slapd/back-ldap/chain.c, function ldap_chain_op(), line 485-486:
op->o_req_dn = pdn; op->o_req_ndn = ndn;
With:
if (pdn.bv_len> 0) { op->o_req_dn = pdn; } if (ndn.bv_len> 0) { op->o_req_ndn = ndn; }
It would be great if this came into the official code.
This issue was fixed consistently in HEAD code more than a month ago, please test it and report, so in case it works the ITS can be closed and the fix released.
Thanks, p.