]> git.sur5r.net Git - openldap/commitdiff
ITS#6718
authorQuanah Gibson-Mount <quanah@openldap.org>
Mon, 3 Jan 2011 23:39:18 +0000 (23:39 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Mon, 3 Jan 2011 23:39:18 +0000 (23:39 +0000)
CHANGES
servers/slapd/overlays/syncprov.c

diff --git a/CHANGES b/CHANGES
index efa5da3ddcbbc3be9aa86e09a32f41ba5b0b6986..49c39d79a63cd16e99f3a4bf3cb8628eb69c749d 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -51,6 +51,7 @@ OpenLDAP 2.4.24 Engineering
        Fixed slapo-syncprov filter race condition (ITS#6708)
        Fixed slapo-syncprov active mod race (ITS#6709)
        Fixed slapo-syncprov to refresh if context is dirty (ITS#6710)
+       Fixed slapo-syncprov CSN updates to all replicas (ITS#6718)
        Fixed contrib/autogroup LDAP URI with attribute filter (ITS#6536)
        Fixed contrib/nssov to only close socket on shutdown (ITS#6676)
        Fixed contrib/nssov multi platform support (ITS#6604)
index 7fd374f016aa7b9eecf25400710dd39479c92611..c9b5e5bd25a11664a9ac2a27ef3402a9c4093aa8 100644 (file)
@@ -1819,17 +1819,20 @@ syncprov_op_response( Operation *op, SlapReply *rs )
                        ldap_pvt_thread_rdwr_wunlock( &si->si_csn_rwlock );
 
                        if ( csn_changed ) {
+                               syncops *ss;
                                ldap_pvt_thread_mutex_lock( &si->si_ops_mutex );
-                               have_psearches = ( si->si_ops != NULL );
-                               ldap_pvt_thread_mutex_unlock( &si->si_ops_mutex );
-
-                               if ( have_psearches ) {
-                                       for ( sm = opc->smatches; sm; sm=sm->sm_next ) {
-                                               if ( sm->sm_op->s_op->o_abandon )
-                                                       continue;
-                                               syncprov_qresp( opc, sm->sm_op, LDAP_SYNC_NEW_COOKIE );
-                                       }
+                               for ( ss = si->si_ops; ss; ss = ss->s_next ) {
+                                       if ( ss->s_op->o_abandon )
+                                               continue;
+                                       /* Send the updated csn to all syncrepl consumers,
+                                        * including the server from which it originated.
+                                        * The syncrepl consumer and syncprov provider on
+                                        * the originating server may be configured to store
+                                        * their csn values in different entries.
+                                        */
+                                       syncprov_qresp( opc, ss, LDAP_SYNC_NEW_COOKIE );
                                }
+                               ldap_pvt_thread_mutex_unlock( &si->si_ops_mutex );
                        }
                        } else {
                        ldap_pvt_thread_rdwr_wunlock( &si->si_csn_rwlock );