]> git.sur5r.net Git - openldap/commitdiff
Compatibility with 2.4
authorHoward Chu <hyc@openldap.org>
Tue, 11 Dec 2007 06:39:27 +0000 (06:39 +0000)
committerHoward Chu <hyc@openldap.org>
Tue, 11 Dec 2007 06:39:27 +0000 (06:39 +0000)
servers/slapd/modify.c
servers/slapd/syncrepl.c

index 2604f072bb07e8bf95747b2eba839eb2aea3c846..bcefb622a4c13dc49d0287a07b14441f3893d1f4 100644 (file)
@@ -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();
index 671abef3d27f815fe234c8aa173c196f6d09e972..de3b244cdd2c2bb46d8f2db31f2f32055527e397 100644 (file)
@@ -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 ) {