From: Rein Tollevik Date: Sun, 21 Nov 2010 19:00:38 +0000 (+0000) Subject: ITS#6718: Send NEW_COOKIE messages to all consumers. X-Git-Tag: MIGRATION_CVS2GIT~413 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=d3cddce24433b7965e67d4174736a53d5e48c8e0;p=openldap ITS#6718: Send NEW_COOKIE messages to all consumers. --- 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 );