Commit 17a35d4b authored by Quanah Gibson-Mount's avatar Quanah Gibson-Mount
Browse files

ITS#6717

parent 20baef34
......@@ -105,6 +105,7 @@ OpenLDAP 2.4.24 Engineering
Fixed slapo-syncprov sessionlog ordering (ITS#6716)
Fixed slapo-syncprov sessionlog with adds (ITS#6503)
Fixed slapo-syncprov mutex (ITS#6438)
Fixed slapo-syncprov mincsn check with MMR (ITS#6717)
Fixed slapo-translucent entry leak (ITS#6746)
Fixed contrib/autogroup LDAP URI with attribute filter (ITS#6536)
Fixed contrib/autogroup install location (ITS#6684)
......
......@@ -2415,7 +2415,7 @@ syncprov_op_search( Operation *op, SlapReply *rs )
sync_control *srs;
BerVarray ctxcsn;
int i, *sids, numcsns;
struct berval mincsn;
struct berval mincsn, maxcsn;
int dirty = 0;
if ( !(op->o_sync_mode & SLAP_SYNC_REFRESH) ) return SLAP_CB_CONTINUE;
......@@ -2530,12 +2530,27 @@ syncprov_op_search( Operation *op, SlapReply *rs )
i++;
}
/* Find the smallest CSN */
mincsn = srs->sr_state.ctxcsn[0];
for ( i=1; i<srs->sr_state.numcsns; i++ ) {
if ( ber_bvcmp( &mincsn, &srs->sr_state.ctxcsn[i] ) > 0 )
mincsn = srs->sr_state.ctxcsn[i];
}
/* Find the smallest CSN which differs from contextCSN */
mincsn.bv_len = 0;
maxcsn.bv_len = 0;
for ( i=0; i<srs->sr_state.numcsns; i++ ) {
for ( j=0; j<numcsns; j++ ) {
if ( srs->sr_state.sids[i] != sids[j] )
continue;
if ( BER_BVISEMPTY( &maxcsn ) || ber_bvcmp( &maxcsn,
&srs->sr_state.ctxcsn[i] ) < 0 ) {
maxcsn = srs->sr_state.ctxcsn[i];
}
if ( ber_bvcmp( &srs->sr_state.ctxcsn[i], &ctxcsn[j] ) < 0) {
if ( BER_BVISEMPTY( &mincsn ) || ber_bvcmp( &mincsn,
&srs->sr_state.ctxcsn[i] ) > 0 ) {
mincsn = srs->sr_state.ctxcsn[i];
}
}
}
}
if ( BER_BVISEMPTY( &mincsn ))
mincsn = maxcsn;
/* If nothing has changed, shortcut it */
if ( srs->sr_state.numcsns == numcsns ) {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment