]> git.sur5r.net Git - openldap/commitdiff
ITS#5086
authorQuanah Gibson-Mount <quanah@openldap.org>
Sat, 9 Feb 2008 02:01:48 +0000 (02:01 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Sat, 9 Feb 2008 02:01:48 +0000 (02:01 +0000)
CHANGES
servers/slapd/back-bdb/idl.c

diff --git a/CHANGES b/CHANGES
index b08001db4c06024b664c51acb9912d4f35ec548e..25aa47761dc163cafa6d03ba8b1bcb7660b66a0f 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -5,6 +5,7 @@ OpenLDAP 2.4.8 Engineering
        Fixed libldap ldap_parse_sasl_bind_result (ITS#5263)
        Fixed libldap search timeout crash (ITS#5291)
        Fixed ldapdelete with sizelimit (ITS#5294)
+       Fixed slapd idlcache on adds (ITS#5086)
        Fixed slapd include handling (ITS#5276)
        Fixed slapd multi-step SASL binds (ITS#5298)
        Fixed slapd non-atomic signal variables (ITS#5248)
index dad12bf56186af7dcb28f0460e38648fdbe6d3bb..44ccbbb0477e1725b1d45dd9d47a33b658207c2f 100644 (file)
@@ -715,10 +715,6 @@ bdb_idl_insert_key(
 
        assert( id != NOID );
 
-       if ( bdb->bi_idl_cache_size ) {
-               bdb_idl_cache_del( bdb, db, key );
-       }
-
        DBTzero( &data );
        data.size = sizeof( ID );
        data.ulen = data.size;
@@ -891,6 +887,12 @@ fail:
                cursor->c_close( cursor );
                return rc;
        }
+       /* If key was added (didn't already exist) and using IDL cache,
+        * update key in IDL cache.
+        */
+       if ( !rc && bdb->bi_idl_cache_max_size ) {
+               bdb_idl_cache_add_id( bdb, db, key, id );
+       }
        rc = cursor->c_close( cursor );
        if( rc != 0 ) {
                Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: "
@@ -923,7 +925,7 @@ bdb_idl_delete_key(
        }
        assert( id != NOID );
 
-       if ( bdb->bi_idl_cache_max_size ) {
+       if ( bdb->bi_idl_cache_size ) {
                bdb_idl_cache_del( bdb, db, key );
        }