version 1.318, 2010/11/21 16:56:09
|
version 1.319, 2010/11/21 18:00:38
|
Line 1
|
Line 1
|
/* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.317 2010/11/21 14:31:38 rein Exp $ */ |
/* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.318 2010/11/21 16:56:09 rein Exp $ */ |
/* syncprov.c - syncrepl provider */ |
/* syncprov.c - syncrepl provider */ |
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. |
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. |
* |
* |
Line 1820 syncprov_op_response( Operation *op, Sla
|
Line 1820 syncprov_op_response( Operation *op, Sla
|
ldap_pvt_thread_rdwr_wunlock( &si->si_csn_rwlock ); |
ldap_pvt_thread_rdwr_wunlock( &si->si_csn_rwlock ); |
|
|
if ( csn_changed ) { |
if ( csn_changed ) { |
|
syncops *ss; |
ldap_pvt_thread_mutex_lock( &si->si_ops_mutex ); |
ldap_pvt_thread_mutex_lock( &si->si_ops_mutex ); |
have_psearches = ( si->si_ops != NULL ); |
for ( ss = si->si_ops; ss; ss = ss->s_next ) { |
ldap_pvt_thread_mutex_unlock( &si->si_ops_mutex ); |
if ( ss->s_op->o_abandon ) |
|
continue; |
if ( have_psearches ) { |
/* Send the updated csn to all syncrepl consumers, |
for ( sm = opc->smatches; sm; sm=sm->sm_next ) { |
* including the server from which it originated. |
if ( sm->sm_op->s_op->o_abandon ) |
* The syncrepl consumer and syncprov provider on |
continue; |
* the originating server may be configured to store |
syncprov_qresp( opc, sm->sm_op, LDAP_SYNC_NEW_COOKIE ); |
* their csn values in different entries. |
} |
*/ |
|
syncprov_qresp( opc, ss, LDAP_SYNC_NEW_COOKIE ); |
} |
} |
|
ldap_pvt_thread_mutex_unlock( &si->si_ops_mutex ); |
} |
} |
} else { |
} else { |
ldap_pvt_thread_rdwr_wunlock( &si->si_csn_rwlock ); |
ldap_pvt_thread_rdwr_wunlock( &si->si_csn_rwlock ); |