ITS#9761 Fix olcSyncrepl position based insertion

This commit is contained in:
Ondřej Kuzník 2021-12-08 15:47:45 +00:00 committed by Quanah Gibson-Mount
parent edc0cd592f
commit a8467b8b15
2 changed files with 18 additions and 6 deletions

View File

@ -7118,7 +7118,7 @@ add_syncrepl(
ConfigArgs *c )
{
syncinfo_t *si;
int rc = 0;
int i, rc = 0;
if ( !( c->be->be_search && c->be->be_add && c->be->be_modify && c->be->be_delete ) ) {
snprintf( c->cr_msg, sizeof(c->cr_msg), "database %s does not support "
@ -7255,13 +7255,17 @@ add_syncrepl(
BER_BVISNULL( &si->si_bindconf.sb_uri ) ?
"(null)" : si->si_bindconf.sb_uri.bv_val );
if ( c->be->be_syncinfo ) {
syncinfo_t *sip;
syncinfo_t **sip;
si->si_cookieState = c->be->be_syncinfo->si_cookieState;
/* add new syncrepl to end of list (same order as when deleting) */
for ( sip = c->be->be_syncinfo; sip->si_next; sip = sip->si_next );
sip->si_next = si;
for ( i = 0, sip = &c->be->be_syncinfo;
(*sip)->si_next && ( c->valx < 0 || i < c->valx );
sip = &(*sip)->si_next, i++ )
/* advance to the desired position */ ;
si->si_next = *sip;
*sip = si;
} else {
si->si_cookieState = ch_calloc( 1, sizeof( cookie_state ));
ldap_pvt_thread_mutex_init( &si->si_cookieState->cs_mutex );
@ -7270,10 +7274,10 @@ add_syncrepl(
ldap_pvt_thread_cond_init( &si->si_cookieState->cs_cond );
c->be->be_syncinfo = si;
si->si_next = NULL;
}
si->si_cookieState->cs_ref++;
si->si_next = NULL;
syncrepl_monitor_init();
return 0;

View File

@ -302,6 +302,14 @@ olcSyncrepl: {0}rid=001 provider=$URI1 binddn="cn=config"
bindmethod=simple credentials=$CONFIGPW searchbase="cn=schema,cn=config"
$SYNCTYPE retry="3 5 300 5" timeout=3
suffixmassage="cn=schema,cn=config,cn=consumer"
# a dummy stanza we add to the beginning and remove again
olcSyncrepl: {0}rid=006 provider=$URI6 binddn="cn=config"
bindmethod=simple credentials=$CONFIGPW searchbase="cn=schema,cn=config"
$SYNCTYPE retry="3 5 300 5" timeout=3
suffixmassage="cn=schema,cn=config,cn=consumer"
-
delete: olcSyncrepl
olcSyncrepl: {0}
-
add: olcMultiProvider
olcMultiProvider: TRUE