From: Howard Chu Date: Mon, 12 Nov 2007 14:38:34 +0000 (+0000) Subject: ITS#5231 don't maintain presentlist for entries added in Persist phase X-Git-Tag: OPENLDAP_REL_ENG_2_4_9~20^2~435 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=82d4844b81e8d91ad97591cc389e18994f7d8b58;p=openldap ITS#5231 don't maintain presentlist for entries added in Persist phase --- diff --git a/servers/slapd/syncrepl.c b/servers/slapd/syncrepl.c index 4f0d7cfca3..085e59f12d 100644 --- a/servers/slapd/syncrepl.c +++ b/servers/slapd/syncrepl.c @@ -93,6 +93,7 @@ typedef struct syncinfo_s { int si_tlimit; int si_refreshDelete; int si_refreshPresent; + int si_refreshDone; int si_syncdata; int si_logstate; int si_conn_setup; @@ -628,6 +629,8 @@ do_syncrep1( ldap_pvt_thread_mutex_unlock( &si->si_cookieState->cs_mutex ); } + si->si_refreshDone = 0; + rc = ldap_sync_search( si, op->o_tmpmemctx ); if( rc != LDAP_SUCCESS ) { @@ -716,7 +719,6 @@ do_syncrep2( struct timeval tout = { 0, 0 }; int refreshDeletes = 0; - int refreshDone = 1; BerVarray syncUUIDs = NULL; ber_tag_t si_tag; @@ -973,10 +975,14 @@ do_syncrep2( slap_parse_sync_cookie( &syncCookie, NULL ); } } + /* Defaults to TRUE */ if ( ber_peek_tag( ber, &len ) == LDAP_TAG_REFRESHDONE ) { - ber_scanf( ber, "b", &refreshDone ); + ber_scanf( ber, "b", &si->si_refreshDone ); + } else + { + si->si_refreshDone = 1; } ber_scanf( ber, /*"{"*/ "}" ); break; @@ -1888,7 +1894,7 @@ syncrepl_entry( si->si_ridtxt, syncrepl_state2str( syncstate ), 0 ); if (( syncstate == LDAP_SYNC_PRESENT || syncstate == LDAP_SYNC_ADD ) ) { - if ( !si->si_refreshPresent ) { + if ( !si->si_refreshPresent && !si->si_refreshDone ) { syncuuid_inserted = avl_presentlist_insert( si, syncUUID ); } }