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

Re: (ITS#6103) canceled operations do not respond



Hallvard B Furuseth wrote:
> The send_ldap_response() fix is still incomplete:
>
> When rc == LDAP_CANCELLED, the function should not send sr_matched,
> sr_text, sr_ref, and sr_ctrls.  Looking at how Abandon works, it seems
> slap_cleanup_play() should still see them if they are not sent?

Dunno what you mean.

> Note, not just when the function itself sets rc = LDAP_CANCELLED,
> since syncprov can set rs->sr_err = LDAP_CANCELLED too.
> Which also suggests the assert( rs->sr_err == LDAP_REFERRAL ) when
> sr_ref != NULL is rather dubious.  Maybe sr_ref should just
> be ignored when sending something else than LDAP_REFERRAL.

Leave the assert() in place until you have proof one way or the other.

> Also, this:
> 	rc = rs->sr_err;
> 	if ( rc == SLAPD_ABANDON&&  op->o_cancel )
> 		rc = LDAP_CANCELLED;
> will send a negative result code (SLAPD_ABANDON) if !o_cancel.

No, it won't. That is all bypassed at the top of the function.

-- 
   -- Howard Chu
   CTO, Symas Corp.           http://www.symas.com
   Director, Highland Sun     http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP  http://www.openldap.org/project/