From: Ondřej Kuzník Date: Thu, 16 Feb 2023 14:50:43 +0000 (+0000) Subject: ITS#9953 Check for push replication X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2a5eff41b0dde100e5946f13205f80c455e2fefb;p=thirdparty%2Fopenldap.git ITS#9953 Check for push replication --- diff --git a/contrib/slapd-modules/variant/variant.c b/contrib/slapd-modules/variant/variant.c index 42d1c76acd..6acd2177d8 100644 --- a/contrib/slapd-modules/variant/variant.c +++ b/contrib/slapd-modules/variant/variant.c @@ -282,9 +282,7 @@ variant_op_add( Operation *op, SlapReply *rs ) variantEntry_info *vei; int rc; - /* Replication always uses the rootdn */ - if ( ov->passReplication && SLAPD_SYNC_IS_SYNCCONN(op->o_connid) && - be_isroot( op ) ) { + if ( ov->passReplication && be_shadow_update( op ) ) { return SLAP_CB_CONTINUE; } @@ -431,9 +429,7 @@ variant_op_mod( Operation *op, SlapReply *rs ) regmatch_t pmatch[10]; int rc, nmatch = sizeof(pmatch) / sizeof(regmatch_t); - /* Replication always uses the rootdn */ - if ( ov->passReplication && SLAPD_SYNC_IS_SYNCCONN(op->o_connid) && - be_isroot( op ) ) { + if ( ov->passReplication && be_shadow_update( op ) ) { return SLAP_CB_CONTINUE; } diff --git a/servers/slapd/overlays/constraint.c b/servers/slapd/overlays/constraint.c index c4ae8fffc5..f939b37762 100644 --- a/servers/slapd/overlays/constraint.c +++ b/servers/slapd/overlays/constraint.c @@ -816,7 +816,7 @@ constraint_add( Operation *op, SlapReply *rs ) int rc = 0; char *msg = NULL; - if (get_relax(op) || SLAPD_SYNC_IS_SYNCCONN( op->o_connid )) { + if ( get_relax(op) || be_shadow_update( op ) ) { return SLAP_CB_CONTINUE; } @@ -958,7 +958,7 @@ constraint_update( Operation *op, SlapReply *rs ) char *msg = NULL; int is_v; - if (get_relax(op) || SLAPD_SYNC_IS_SYNCCONN( op->o_connid )) { + if ( get_relax(op) || be_shadow_update( op ) ) { return SLAP_CB_CONTINUE; } diff --git a/servers/slapd/overlays/ppolicy.c b/servers/slapd/overlays/ppolicy.c index 7913f35c09..0271dde6a7 100644 --- a/servers/slapd/overlays/ppolicy.c +++ b/servers/slapd/overlays/ppolicy.c @@ -2504,7 +2504,7 @@ ppolicy_add( return rs->sr_err; /* If this is a replica, assume the provider checked everything */ - if ( SLAPD_SYNC_IS_SYNCCONN( op->o_connid ) ) + if ( be_shadow_update( op ) ) return SLAP_CB_CONTINUE; ppolicy_get( op, op->ora_e, &pp ); @@ -2674,7 +2674,7 @@ ppolicy_modify( Operation *op, SlapReply *rs ) /* If this is a replica, we may need to tweak some of the * provider's modifications. Otherwise, just pass it through. */ - if ( SLAPD_SYNC_IS_SYNCCONN( op->o_connid ) ) { + if ( be_shadow_update( op ) ) { Modifications **prev; Attribute *a_grace, *a_lock, *a_fail, *a_success; diff --git a/servers/slapd/overlays/unique.c b/servers/slapd/overlays/unique.c index e71fabfd2f..147fd00d71 100644 --- a/servers/slapd/overlays/unique.c +++ b/servers/slapd/overlays/unique.c @@ -1077,7 +1077,7 @@ unique_add( Debug(LDAP_DEBUG_TRACE, "==> unique_add <%s>\n", op->o_req_dn.bv_val ); - if ( SLAPD_SYNC_IS_SYNCCONN( op->o_connid ) || ( + if ( be_shadow_update( op ) || ( get_relax(op) > SLAP_CONTROL_IGNORED && access_allowed( op, op->ora_e, slap_schema.si_ad_entry, NULL, @@ -1229,7 +1229,7 @@ unique_modify( return rc; } - if ( SLAPD_SYNC_IS_SYNCCONN( op->o_connid ) ) { + if ( be_shadow_update( op ) ) { return rc; } if ( get_relax(op) > SLAP_CONTROL_IGNORED @@ -1369,7 +1369,7 @@ unique_modrdn( Debug(LDAP_DEBUG_TRACE, "==> unique_modrdn <%s> <%s>\n", op->o_req_dn.bv_val, op->orr_newrdn.bv_val ); - if ( SLAPD_SYNC_IS_SYNCCONN( op->o_connid ) ) { + if ( be_shadow_update( op ) ) { return rc; } if ( get_relax(op) > SLAP_CONTROL_IGNORED