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 "
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 );
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;
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