]> git.sur5r.net Git - openldap/commitdiff
ITS#7090 fix out-of-order slapadd
authorHoward Chu <hyc@openldap.org>
Fri, 25 Nov 2011 08:23:51 +0000 (00:23 -0800)
committerHoward Chu <hyc@openldap.org>
Fri, 25 Nov 2011 08:25:52 +0000 (00:25 -0800)
servers/slapd/back-mdb/id2entry.c

index d2f1715477feebb58ad161afec0bd55b6934f7c2..ea9df05f2d4fea1c0dbd4dfe9de7fc7c73122415 100644 (file)
@@ -35,6 +35,8 @@ static int mdb_entry_encode(Operation *op, Entry *e, MDB_val *data,
        Ecount *ec);
 static Entry *mdb_entry_alloc( Operation *op, int nattrs, int nvals );
 
+#define ADD_FLAGS      (MDB_NOOVERWRITE|MDB_APPEND)
+
 static int mdb_id2entry_put(
        Operation *op,
        MDB_txn *txn,
@@ -72,7 +74,7 @@ again:
        if (rc) {
                /* Was there a hole from slapadd? */
                if ( (flag & MDB_NOOVERWRITE) && data.mv_size == 0 ) {
-                       flag ^= MDB_NOOVERWRITE;
+                       flag ^= ADD_FLAGS;
                        goto again;
                }
                Debug( LDAP_DEBUG_ANY,
@@ -97,7 +99,7 @@ int mdb_id2entry_add(
        MDB_cursor *mc,
        Entry *e )
 {
-       return mdb_id2entry_put(op, txn, mc, e, MDB_NOOVERWRITE|MDB_APPEND);
+       return mdb_id2entry_put(op, txn, mc, e, ADD_FLAGS);
 }
 
 int mdb_id2entry_update(