mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-02-23 14:09:39 +08:00
don't return referral if cannot compute one (should fix ITS#2435)
This commit is contained in:
parent
c754980045
commit
9f7c48ab54
@ -313,14 +313,20 @@ do_add( Operation *op, SlapReply *rs )
|
||||
|
||||
defref = op->o_bd->be_update_refs
|
||||
? op->o_bd->be_update_refs : default_referral;
|
||||
rs->sr_ref = referral_rewrite( defref,
|
||||
NULL, &e->e_name, LDAP_SCOPE_DEFAULT );
|
||||
if ( defref != NULL ) {
|
||||
rs->sr_ref = referral_rewrite( defref,
|
||||
NULL, &e->e_name, LDAP_SCOPE_DEFAULT );
|
||||
|
||||
rs->sr_err = LDAP_REFERRAL;
|
||||
if (!rs->sr_ref) rs->sr_ref = default_referral;
|
||||
send_ldap_result( op, rs );
|
||||
rs->sr_err = LDAP_REFERRAL;
|
||||
if (!rs->sr_ref) rs->sr_ref = default_referral;
|
||||
send_ldap_result( op, rs );
|
||||
|
||||
if ( rs->sr_ref != default_referral ) ber_bvarray_free( rs->sr_ref );
|
||||
if ( rs->sr_ref != default_referral ) ber_bvarray_free( rs->sr_ref );
|
||||
} else {
|
||||
send_ldap_error( op, rs,
|
||||
LDAP_UNWILLING_TO_PERFORM,
|
||||
"referral missing" );
|
||||
}
|
||||
#endif /* SLAPD_MULTIMASTER */
|
||||
}
|
||||
} else {
|
||||
|
@ -199,14 +199,20 @@ do_delete(
|
||||
} else {
|
||||
BerVarray defref = op->o_bd->be_update_refs
|
||||
? op->o_bd->be_update_refs : default_referral;
|
||||
rs->sr_ref = referral_rewrite( default_referral,
|
||||
NULL, &op->o_req_dn, LDAP_SCOPE_DEFAULT );
|
||||
if ( defref != NULL ) {
|
||||
rs->sr_ref = referral_rewrite( default_referral,
|
||||
NULL, &op->o_req_dn, LDAP_SCOPE_DEFAULT );
|
||||
|
||||
if (!rs->sr_ref) rs->sr_ref = defref;
|
||||
rs->sr_err = LDAP_REFERRAL;
|
||||
send_ldap_result( op, rs );
|
||||
if (!rs->sr_ref) rs->sr_ref = defref;
|
||||
rs->sr_err = LDAP_REFERRAL;
|
||||
send_ldap_result( op, rs );
|
||||
|
||||
if (rs->sr_ref != defref) ber_bvarray_free( rs->sr_ref );
|
||||
if (rs->sr_ref != defref) ber_bvarray_free( rs->sr_ref );
|
||||
} else {
|
||||
send_ldap_error( op, rs,
|
||||
LDAP_UNWILLING_TO_PERFORM,
|
||||
"referral missing" );
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -432,13 +432,25 @@ do_modify(
|
||||
} else {
|
||||
BerVarray defref = op->o_bd->be_update_refs
|
||||
? op->o_bd->be_update_refs : default_referral;
|
||||
rs->sr_ref = referral_rewrite( defref,
|
||||
NULL, &op->o_req_dn, LDAP_SCOPE_DEFAULT );
|
||||
|
||||
if (!rs->sr_ref) rs->sr_ref = defref;
|
||||
rs->sr_err = LDAP_REFERRAL;
|
||||
send_ldap_result( op, rs );
|
||||
if (rs->sr_ref != defref) ber_bvarray_free( rs->sr_ref );
|
||||
if ( defref != NULL ) {
|
||||
rs->sr_ref = referral_rewrite( defref,
|
||||
NULL, &op->o_req_dn,
|
||||
LDAP_SCOPE_DEFAULT );
|
||||
|
||||
if (!rs->sr_ref) {
|
||||
rs->sr_ref = defref;
|
||||
}
|
||||
rs->sr_err = LDAP_REFERRAL;
|
||||
send_ldap_result( op, rs );
|
||||
if (rs->sr_ref != defref) {
|
||||
ber_bvarray_free( rs->sr_ref );
|
||||
}
|
||||
} else {
|
||||
send_ldap_error( op, rs,
|
||||
LDAP_UNWILLING_TO_PERFORM,
|
||||
"referral missing" );
|
||||
}
|
||||
#endif
|
||||
}
|
||||
} else {
|
||||
|
@ -362,14 +362,20 @@ do_modrdn(
|
||||
} else {
|
||||
BerVarray defref = op->o_bd->be_update_refs
|
||||
? op->o_bd->be_update_refs : default_referral;
|
||||
rs->sr_ref = referral_rewrite( defref,
|
||||
NULL, &op->o_req_dn, LDAP_SCOPE_DEFAULT );
|
||||
if (!rs->sr_ref) rs->sr_ref = defref;
|
||||
if ( defref != NULL ) {
|
||||
rs->sr_ref = referral_rewrite( defref,
|
||||
NULL, &op->o_req_dn, LDAP_SCOPE_DEFAULT );
|
||||
if (!rs->sr_ref) rs->sr_ref = defref;
|
||||
|
||||
rs->sr_err = LDAP_REFERRAL;
|
||||
send_ldap_result( op, rs );
|
||||
rs->sr_err = LDAP_REFERRAL;
|
||||
send_ldap_result( op, rs );
|
||||
|
||||
if (rs->sr_ref != defref) ber_bvarray_free( rs->sr_ref );
|
||||
if (rs->sr_ref != defref) ber_bvarray_free( rs->sr_ref );
|
||||
} else {
|
||||
send_ldap_error( op, rs,
|
||||
LDAP_UNWILLING_TO_PERFORM,
|
||||
"referral missing" );
|
||||
}
|
||||
#endif
|
||||
}
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user