mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-06 10:46:21 +08:00
More for ITS#5536
This commit is contained in:
parent
a709d8b69a
commit
4b2c003907
@ -582,8 +582,8 @@ do_syncrep1(
|
||||
si->si_syncCookie.rid = si->si_rid;
|
||||
|
||||
/* whenever there are multiple data sources possible, advertise sid */
|
||||
si->si_syncCookie.sid = ( SLAP_MULTIMASTER( si->si_be ) || SLAP_GLUE_SUBORDINATE( si->si_be ) ||
|
||||
SLAP_GLUE_INSTANCE( si->si_be )) ? slap_serverID : -1;
|
||||
si->si_syncCookie.sid = ( SLAP_MULTIMASTER( si->si_be ) || si->si_be != si->si_wbe ) ?
|
||||
slap_serverID : -1;
|
||||
|
||||
/* We've just started up, or the remote server hasn't sent us
|
||||
* any meaningful state.
|
||||
@ -1242,7 +1242,8 @@ do_syncrepl(
|
||||
*
|
||||
* Typically there is a single syncprov mastering the entire
|
||||
* glued tree. In that case, our contextCSN updates should
|
||||
* go to the master DB.
|
||||
* go to the master DB. But if there is no syncprov on the
|
||||
* master DB, then nothing special is needed here.
|
||||
*
|
||||
* Alternatively, there may be individual syncprov overlays
|
||||
* on each glued branch. In that case, each syncprov only
|
||||
@ -1251,7 +1252,11 @@ do_syncrepl(
|
||||
*/
|
||||
if ( !si->si_wbe ) {
|
||||
if ( SLAP_GLUE_SUBORDINATE( be ) && !overlay_is_inst( be, "syncprov" )) {
|
||||
si->si_wbe = select_backend( &be->be_nsuffix[0], 1 );
|
||||
BackendDB * top_be = select_backend( &be->be_nsuffix[0], 1 );
|
||||
if ( overlay_is_inst( top_be, "syncprov" ))
|
||||
si->si_wbe = select_backend( &be->be_nsuffix[0], 1 );
|
||||
else
|
||||
si->si_wbe = be;
|
||||
} else {
|
||||
si->si_wbe = be;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user