ITS#7052 ignore Adds with too old entryCSN

This commit is contained in:
Howard Chu 2012-02-03 11:16:10 -08:00
parent 5584e5b98d
commit ba4366eae0

View File

@ -2820,6 +2820,23 @@ syncrepl_entry(
*/ */
op->o_csn = a->a_vals[0]; op->o_csn = a->a_vals[0];
freecsn = 0; freecsn = 0;
/* There was no cookie CSN attached to this op,
* make sure it's new enough
*/
if ( !syncCSN ) {
int i, sid = slap_parse_csn_sid( &a->a_vals[0] );
for ( i = 0; i<si->si_cookieState->cs_num; i++ ) {
if ( sid < si->si_cookieState->cs_sids[i] )
break;
if ( sid == si->si_cookieState->cs_sids[i] ) {
if ( ber_bvcmp( &a->a_vals[0], &si->si_cookieState->cs_vals[i] ) <= 0 ) {
Debug( LDAP_DEBUG_SYNC, "do_syncrep2: %s entryCSN too old, ignoring %s (%s)\n",
si->si_ridtxt, a->a_vals[0].bv_val, entry->e_name.bv_val );
goto done;
}
}
}
}
} }
} }
retry_add:; retry_add:;