]> git.sur5r.net Git - openldap/commitdiff
ITS#6555
authorQuanah Gibson-Mount <quanah@openldap.org>
Thu, 10 Jun 2010 20:50:47 +0000 (20:50 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Thu, 10 Jun 2010 20:50:47 +0000 (20:50 +0000)
CHANGES
servers/slapd/overlays/syncprov.c

diff --git a/CHANGES b/CHANGES
index 0c064721c1ef9d75bebe87c5ce9675747f81252e..9f0700416cef68568ba193700c1bba2b7a94c286 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -10,6 +10,7 @@ OpenLDAP 2.4.23 Engineering
        Fixed slapo-ppolicy to use Debug (ITS#6566)
        Fixed slapo-rwm to use Debug (ITS#6566)
        Fixed slapo-sssvlv to use Debug (ITS#6566)
+       Fixed slapo-syncprov lost deletes in refresh phase (ITS#6555)
        Fixed slapo-valsort to use Debug (ITS#6566)
        Fixed contrib/nssov network.c missing patch (ITS#6562)
        Build Environment
index 0e8afedaa078f43126040da0b35c15d7a8ff4dd6..8a3727d375ec19440b14892c98401ceea38d2d70 100644 (file)
@@ -1301,7 +1301,15 @@ syncprov_matchops( Operation *op, opcookie *opc, int saveit )
                        op2.o_hdr = &oh;
                        op2.o_extra = op->o_extra;
                        op2.o_callback = NULL;
-                       rc = test_filter( &op2, e, ss->s_op->ors_filter );
+                       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
+                                  phase otherwise (ITS#6555) */
+                               op2.ors_filter = ss->s_op->ors_filter->f_and->f_next;
+                       }
+                       ldap_pvt_thread_mutex_unlock( &ss->s_mutex );
+                       rc = test_filter( &op2, e, op2.ors_filter );
                }
 
                Debug( LDAP_DEBUG_TRACE, "syncprov_matchops: sid %03x fscope %d rc %d\n",