From d3cddce24433b7965e67d4174736a53d5e48c8e0 Mon Sep 17 00:00:00 2001 From: Rein Tollevik Date: Sun, 21 Nov 2010 19:00:38 +0000 Subject: [PATCH] ITS#6718: Send NEW_COOKIE messages to all consumers. --- servers/slapd/overlays/syncprov.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/servers/slapd/overlays/syncprov.c b/servers/slapd/overlays/syncprov.c index a3be9491fc..db300cbc9a 100644 --- a/servers/slapd/overlays/syncprov.c +++ b/servers/slapd/overlays/syncprov.c @@ -1820,17 +1820,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 ); -- 2.39.5