if( (void *) e->e_attrs != (void *) (e+1)) {
attr_delete( &e->e_attrs, slap_schema.si_ad_entryCSN );
attr_merge_normalize_one( e, slap_schema.si_ad_entryCSN,
- &op->ord_csn, NULL );
+ &op->o_sync_csn, NULL );
} else {
- a->a_vals[0] = op->ord_csn;
+ a->a_vals[0] = op->o_sync_csn;
}
} else {
/* Hm, the entryCSN ought to exist. ??? */
char csnbuf[ LDAP_LUTIL_CSNSTR_BUFSIZE ];
if ( !repl_user ) {
- slap_get_csn( op, csnbuf, sizeof(csnbuf), &op->ord_csn, 1 );
+ struct berval csn = BER_BVNULL;
+ char csnbuf[LDAP_LUTIL_CSNSTR_BUFSIZE];
+ slap_get_csn( op, csnbuf, sizeof(csnbuf), &csn, 1 );
}
#ifdef SLAPD_MULTIMASTER
desc->ad_type->sat_syntax,
desc->ad_type->sat_equality,
&mod_tmp->sml_values[0],
- &mod_tmp->sml_nvalues[0], op->o_tmpmemctx );
+ &mod_tmp->sml_nvalues[0], NULL );
mod_tmp->sml_nvalues[1].bv_val = NULL;
} else {
mod_tmp->sml_nvalues = NULL;
slap_sync_cookie_free( &syncCookie, 0 );
slap_sync_cookie_free( &syncCookie_req, 0 );
+ avl_free( si->si_presentlist, avl_ber_bvfree );
+ si->si_presentlist = NULL;
+
if ( res ) ldap_msgfree( res );
if ( rc && si->si_ld ) {
*modtail = mod;
modtail = &mod->sml_next;
- if ( scbva[0].bv_val ) ch_free( scbva[0].bv_val );
- ber_dupbv( &scbva[0], &si->si_syncCookie.octet_str[0] );
mod = (Modifications *) ch_calloc( 1, sizeof( Modifications ));
mod->sml_op = LDAP_MOD_REPLACE;
- mod->sml_desc = slap_schema.si_ad_syncreplCookie;
+ mod->sml_desc = slap_schema.si_ad_subtreeSpecification;
mod->sml_type = mod->sml_desc->ad_cname;
- mod->sml_values = scbva;
+ mod->sml_values = ssbva;
*modtail = mod;
modtail = &mod->sml_next;
+ /* Keep this last, so we can avoid touching the previous
+ * attributes unnecessarily.
+ */
+ if ( scbva[0].bv_val ) ch_free( scbva[0].bv_val );
+ ber_dupbv( &scbva[0], &si->si_syncCookie.octet_str[0] );
mod = (Modifications *) ch_calloc( 1, sizeof( Modifications ));
mod->sml_op = LDAP_MOD_REPLACE;
- mod->sml_desc = slap_schema.si_ad_subtreeSpecification;
+ mod->sml_desc = slap_schema.si_ad_syncreplCookie;
mod->sml_type = mod->sml_desc->ad_cname;
- mod->sml_values = ssbva;
+ mod->sml_values = scbva;
*modtail = mod;
modtail = &mod->sml_next;
/* update persistent cookie */
update_cookie_retry:
op->o_tag = LDAP_REQ_MODIFY;
- op->orm_modlist = modlist;
+ /* Just modify the cookie value, not the entire entry */
+ op->orm_modlist = mod;
rc = be->be_modify( op, &rs_modify );
if ( rs_modify.sr_err != LDAP_SUCCESS ) {