ber_int_t msgid;
int rc, isproxy;
int do_retry = 1;
+ char *text = NULL;
lc = ldap_back_getconn( op, rs, LDAP_BACK_SENDERR );
if ( !lc || !ldap_back_dobind( lc, op, rs, LDAP_BACK_SENDERR ) ) {
*/
rc = ldap_parse_result( lc->lc_ld, res, &rs->sr_err,
(char **)&rs->sr_matched,
- (char **)&rs->sr_text,
+ &text,
NULL, NULL, 0 );
if ( rc == LDAP_SUCCESS ) {
goto retry;
}
}
+ if ( text ) rs->sr_text = text;
send_ldap_extended( op, rs );
/* otherwise frontend resends result */
rc = rs->sr_err = SLAPD_ABANDON;
rs->sr_matched = NULL;
}
- if ( rs->sr_text ) {
- free( (char *)rs->sr_text );
+ if ( text ) {
+ free( text );
rs->sr_text = NULL;
}
ber_int_t msgid;
int rc;
int do_retry = 1;
+ char *text = NULL;
lc = ldap_back_getconn( op, rs, LDAP_BACK_SENDERR );
if ( !lc || !ldap_back_dobind( lc, op, rs, LDAP_BACK_SENDERR ) ) {
*/
rc = ldap_parse_result( lc->lc_ld, res, &rs->sr_err,
(char **)&rs->sr_matched,
- (char **)&rs->sr_text,
+ text,
NULL, NULL, 0 );
if ( rc == LDAP_SUCCESS ) {
if ( rs->sr_err == LDAP_SUCCESS ) {
goto retry;
}
}
+ if ( text ) rs->sr_text = text;
send_ldap_extended( op, rs );
/* otherwise frontend resends result */
rc = rs->sr_err = SLAPD_ABANDON;
rs->sr_matched = NULL;
}
- if ( rs->sr_text ) {
- free( (char *)rs->sr_text );
+ if ( text ) {
+ free( text );
rs->sr_text = NULL;
}
}
} else {
- char **references = NULL;
+ char **references = NULL, *err = NULL;
rc = ldap_parse_result( lc->lc_ld, res, &rs->sr_err,
- &match.bv_val, (char **)&rs->sr_text,
+ &match.bv_val, &err,
&references, &rs->sr_ctrls, 1 );
- freetext = 1;
if ( rc != LDAP_SUCCESS ) {
rs->sr_err = rc;
}
rs->sr_err = slap_map_api2result( rs );
+ if ( err ) {
+ rs->sr_text = err;
+ freetext = 1;
+ }
if ( references && references[ 0 ] && references[ 0 ][ 0 ] ) {
int cnt;