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;
continue;
}
- while ( isspace( (unsigned char) next[ 0 ] ) ) next++;
- if ( next[ 0 ] != '\0' ) {
+ while ( isspace( (unsigned char) next[ 0 ] ) && next[ 0 ] != '\n' )
+ next++;
+ if ( next[ 0 ] != '\0' && next[ 0 ] != '\n' ) {
Debug( LDAP_DEBUG_ANY, "str2result (%s) extra cruft after value\n",
s, 0, 0 );
rc = -1;
continue;
}
- /* FIXME: what if it's larger that max int? */
+ /* FIXME: what if it's larger than max int? */
*code = (int)retcode;
} else if ( strncasecmp( s, "matched", STRLENOF( "matched" ) ) == 0 ) {