int rc = LDAP_SUCCESS;
long bytes;
- if (( rs->sr_err == SLAPD_ABANDON || op->o_abandon ) && !op->o_cancel ) {
+ /* op was actually aborted, bypass everything if client didn't Cancel */
+ if (( rs->sr_err == SLAPD_ABANDON ) && !op->o_cancel ) {
rc = SLAPD_ABANDON;
goto clean2;
}
}
}
+ /* op completed, connection aborted, bypass sending response */
+ if ( op->o_abandon && !op->o_cancel ) {
+ rc = SLAPD_ABANDON;
+ goto clean2;
+ }
+
#ifdef LDAP_CONNECTIONLESS
if (op->o_conn && op->o_conn->c_is_udp)
ber = op->o_res_ber;