This is an automated email from the git hooks/post-receive script.
lkrispen pushed a change to branch 389-ds-base-1.3.6 in repository 389-ds-base.
from 6927069 Ticket 49379 - Allowed sasl mapping requires restart new 6f585fa Ticket: 49180 - backport 1.3.6 errors log filled with attrlist_replace - attr_replace
The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference.
Summary of changes: ldap/servers/plugins/replication/repl5_ruv.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)
This is an automated email from the git hooks/post-receive script.
lkrispen pushed a commit to branch 389-ds-base-1.3.6 in repository 389-ds-base.
commit 6f585fa9adaa83efa98b72aa112e162f180b0ad1 Author: Ludwig Krispenz lkrispen@redhat.com Date: Wed Sep 27 10:58:36 2017 +0200
Ticket: 49180 - backport 1.3.6 errors log filled with attrlist_replace - attr_replace
Bug: If a RUV contains the same URL with different replica IDs the created referrals contain duplicates
Fix: check duplicate referrals
Reviewed by: Mark, thanks --- ldap/servers/plugins/replication/repl5_ruv.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/ldap/servers/plugins/replication/repl5_ruv.c b/ldap/servers/plugins/replication/repl5_ruv.c index 39449b6..7f34059 100644 --- a/ldap/servers/plugins/replication/repl5_ruv.c +++ b/ldap/servers/plugins/replication/repl5_ruv.c @@ -1502,7 +1502,17 @@ ruv_replica_count (const RUV *ruv) * Extract all the referral URL's from the RUV (but self URL), * returning them in an array of strings, that * the caller must free. + * We also check and remove duplicates (caused by unclean RUVs) */ +static int +ruv_referral_exists(unsigned char *purl, char **refs, int count) +{ + for (size_t j=0; j<count; j++) { + if (0 == slapi_utf8casecmp(purl, (unsigned char *)refs[j])) + return 1; + } + return 0; +} char ** ruv_get_referrals(const RUV *ruv) { @@ -1525,7 +1535,8 @@ ruv_get_referrals(const RUV *ruv) /* Add URL into referrals if doesn't match self URL */ if((replica->replica_purl!=NULL) && (slapi_utf8casecmp((unsigned char *)replica->replica_purl, - (unsigned char *)mypurl) != 0)) + (unsigned char *)mypurl) != 0) && + !ruv_referral_exists((unsigned char *)replica->replica_purl, r, i)) { r[i]= slapi_ch_strdup(replica->replica_purl); i++;
389-commits@lists.fedoraproject.org