On Mon, Mar 16, 2009 at 12:53:18AM -0700, Howard Chu wrote:
> You need to make sure that your overlays are configured such that your
> nops executes before accesslog, to prevent accesslog from attempting to
> log anything.
>
> Also, in your cancel code, you need to set op->o_callback to NULL before
> calling send_ldap_error, to make sure that no other overlays run. Then
> set it back to whatever it was, before returning.
Without modifying the code, configuring nops after accesslog in slapd.conf
does prevent it from crashing.
Setting o_callback to NULL fixes the crash. And it seems to fix it
regardless of overlay order: whether nops is configured before or after
accesslog, it works fine with that cancel code:
if ((m = op->orm_modlist) == NULL) {
slap_callback *cb = op->o_callback;
op->o_bd->bd_info = (BackendInfo *)(on->on_info);
op->o_callback = NULL;
send_ldap_error(op, rs, LDAP_SUCCESS, "");
op->o_callback = cb;
return (rs->sr_err);
}
--
Emmanuel Dreyfus
manu@netbsd.org