From: Howard Chu Date: Tue, 11 Dec 2007 06:39:27 +0000 (+0000) Subject: Compatibility with 2.4 X-Git-Tag: OPENLDAP_REL_ENG_2_3_40~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=424b85d75f835cca7e2a41755af494e2db7c2804;p=thirdparty%2Fopenldap.git Compatibility with 2.4 --- diff --git a/servers/slapd/modify.c b/servers/slapd/modify.c index 2604f072bb..bcefb622a4 100644 --- a/servers/slapd/modify.c +++ b/servers/slapd/modify.c @@ -826,6 +826,7 @@ void slap_mods_opattrs( timestamp.bv_val = timebuf; for ( modtail = modsp; *modtail; modtail = &(*modtail)->sml_next ) { if ( (*modtail)->sml_op != LDAP_MOD_ADD && + (*modtail)->sml_op != SLAP_MOD_SOFTADD && (*modtail)->sml_op != LDAP_MOD_REPLACE ) continue; if ( (*modtail)->sml_desc == slap_schema.si_ad_entryCSN ) { csn = (*modtail)->sml_values[0]; @@ -851,11 +852,10 @@ void slap_mods_opattrs( csn = op->o_csn; } ptr = ber_bvchr( &csn, '#' ); - if ( ptr && ptr < &csn.bv_val[csn.bv_len] ) { - timestamp.bv_len = ptr - csn.bv_val; - if ( timestamp.bv_len >= sizeof( timebuf )) - timestamp.bv_len = sizeof( timebuf ) - 1; - strncpy( timebuf, csn.bv_val, timestamp.bv_len ); + if ( ptr ) { + timestamp.bv_len = STRLENOF("YYYYMMDDHHMMSSZ"); + AC_MEMCPY( timebuf, csn.bv_val, timestamp.bv_len ); + timebuf[timestamp.bv_len-1] = 'Z'; timebuf[timestamp.bv_len] = '\0'; } else { time_t now = slap_get_time(); diff --git a/servers/slapd/syncrepl.c b/servers/slapd/syncrepl.c index 671abef3d2..de3b244cdd 100644 --- a/servers/slapd/syncrepl.c +++ b/servers/slapd/syncrepl.c @@ -2370,7 +2370,7 @@ syncrepl_updateCookie( Modifications mod = { { 0 } }; struct berval vals[ 2 ]; - int rc; + int rc, dbflags; slap_callback cb = { NULL }; SlapReply rs_modify = {REP_RESULT}; @@ -2402,7 +2402,10 @@ syncrepl_updateCookie( /* update contextCSN */ op->o_msgid = SLAP_SYNC_UPDATE_MSGID; op->orm_modlist = &mod; + dbflags = SLAP_DBFLAGS(op->o_bd); + SLAP_DBFLAGS(op->o_bd) |= SLAP_DBFLAG_NOLASTMOD; rc = be->be_modify( op, &rs_modify ); + SLAP_DBFLAGS(op->o_bd) = dbflags; op->o_msgid = 0; if ( rs_modify.sr_err != LDAP_SUCCESS ) {