From 06438e93098dfeefc514443866f1b88f019fffa6 Mon Sep 17 00:00:00 2001 From: Quanah Gibson-Mount Date: Sun, 12 Dec 2010 04:54:09 +0000 Subject: [PATCH] ITS#6708 --- CHANGES | 1 + servers/slapd/overlays/syncprov.c | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index 27edc2a4ec..f8fde1e813 100644 --- a/CHANGES +++ b/CHANGES @@ -21,6 +21,7 @@ OpenLDAP 2.4.24 Engineering Fixed slapo-ppolicy don't update opattrs on consumers (ITS#6608) Fixed slapo-sssvlv initialization (ITS#6649) Fixed slapo-syncprov to send error if consumer is newer (ITS#6606) + Fixed slapo-syncprov properly mutex filter (ITS#6708) Fixed contrib/nssov to only close socket on shutdown (ITS#6676) Documentation admin24 guide typo fixes (ITS#6609) diff --git a/servers/slapd/overlays/syncprov.c b/servers/slapd/overlays/syncprov.c index 60db65e1b8..c708dc6db6 100644 --- a/servers/slapd/overlays/syncprov.c +++ b/servers/slapd/overlays/syncprov.c @@ -1293,6 +1293,7 @@ syncprov_matchops( Operation *op, opcookie *opc, int saveit ) } if ( fc.fscope ) { + ldap_pvt_thread_mutex_lock( &ss->s_mutex ); op2 = *ss->s_op; oh = *op->o_hdr; oh.oh_conn = ss->s_op->o_conn; @@ -1301,7 +1302,6 @@ syncprov_matchops( Operation *op, opcookie *opc, int saveit ) op2.o_hdr = &oh; op2.o_extra = op->o_extra; op2.o_callback = NULL; - ldap_pvt_thread_mutex_lock( &ss->s_mutex ); if (ss->s_flags & PS_FIX_FILTER) { /* Skip the AND/GE clause that we stuck on in front. We would lose deletes/mods that happen during the refresh @@ -2606,10 +2606,14 @@ shortcut: #endif ber_dupbv_x( &fava->f_ava->aa_value, &mincsn, op->o_tmpmemctx ); fava->f_next = op->ors_filter; + if ( sop ) + ldap_pvt_thread_mutex_lock( &sop->s_mutex ); op->ors_filter = fand; filter2bv_x( op, op->ors_filter, &op->ors_filterstr ); - if ( sop ) + if ( sop ) { sop->s_flags |= PS_FIX_FILTER; + ldap_pvt_thread_mutex_unlock( &sop->s_mutex ); + } } /* Let our callback add needed info to returned entries */ -- 2.39.5