if ( msg ) ldap_msgfree( msg );
if ( rc ) {
+ if ( rc == LDAP_SYNC_REFRESH_REQUIRED && si->si_logstate == SYNCLOG_LOGGING && si->si_ld )
+ return rc
/* never reuse existing connection */
if ( si->si_conn ) {
connection_client_stop( si->si_conn );
if ( !si->si_schemachecking )
op->o_no_schema_check = 1;
-reload:
/* Establish session, do search */
if ( !si->si_ld ) {
si->si_refreshDelete = 0;
rc = do_syncrep1( op, si );
}
+reload:
/* Process results */
if ( rc == LDAP_SUCCESS ) {
ldap_get_option( si->si_ld, LDAP_OPT_DESC, &s );
op->o_ndn = op->o_bd->be_rootndn;
rc = do_syncrep2( op, si );
if ( rc == LDAP_SYNC_REFRESH_REQUIRED ) {
- if ( si->si_logstate == SYNCLOG_LOGGING )
+ if ( si->si_logstate == SYNCLOG_LOGGING ) {
+ if ( BER_BVISNULL( &si->si_syncCookie.octet_str ))
+ slap_compose_sync_cookie( NULL, &si->si_syncCookie.octet_str,
+ si->si_syncCookie.ctxcsn, si->si_syncCookie.rid,
+ si->si_syncCookie.sid, NULL );
+ rc = ldap_sync_search( si, op->o_tmpmemctx );
goto reload;
+ }
/* give up but schedule an immedite retry */
rc = SYNC_PAUSED;
}