From: Howard Chu Date: Mon, 28 Nov 2005 22:53:03 +0000 (+0000) Subject: ITS#4223 don't store negative results in IDL cache X-Git-Tag: OPENLDAP_REL_ENG_2_4_BP~658 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=a0d9bd78904ac243ee71616c05a6eebcd81dcf9a;p=openldap ITS#4223 don't store negative results in IDL cache --- diff --git a/servers/slapd/back-bdb/dn2id.c b/servers/slapd/back-bdb/dn2id.c index 311fb30f19..185c73491b 100644 --- a/servers/slapd/back-bdb/dn2id.c +++ b/servers/slapd/back-bdb/dn2id.c @@ -1006,7 +1006,7 @@ synced: if ( !BDB_IDL_IS_RANGE( cx->tmp ) && cx->tmp[0] > 3 ) bdb_idl_sort( cx->tmp, cx->buf ); - if ( cx->bdb->bi_idl_cache_max_size ) { + if ( cx->bdb->bi_idl_cache_max_size && !BDB_IDL_IS_ZERO( cx->tmp )) { char *ptr = ((char *)&cx->id)-1; cx->key.data = ptr; cx->key.size = sizeof(ID)+1; diff --git a/servers/slapd/back-bdb/idl.c b/servers/slapd/back-bdb/idl.c index c29d9228ce..e034fb2ff8 100644 --- a/servers/slapd/back-bdb/idl.c +++ b/servers/slapd/back-bdb/idl.c @@ -325,17 +325,17 @@ bdb_idl_cache_put( bdb_idl_cache_entry_t idl_tmp; bdb_idl_cache_entry_t *ee; + if ( rc == DB_NOTFOUND || BDB_IDL_IS_ZERO( ids )) + return; + DBT2bv( key, &idl_tmp.kstr ); ee = (bdb_idl_cache_entry_t *) ch_malloc( sizeof( bdb_idl_cache_entry_t ) ); ee->db = db; - if ( rc == DB_NOTFOUND || BDB_IDL_IS_ZERO( ids )) { - ee->idl = NULL; - } else { - ee->idl = (ID*) ch_malloc( BDB_IDL_SIZEOF ( ids ) ); - BDB_IDL_CPY( ee->idl, ids ); - } + ee->idl = (ID*) ch_malloc( BDB_IDL_SIZEOF ( ids ) ); + BDB_IDL_CPY( ee->idl, ids ); + ee->idl_lru_prev = NULL; ee->idl_lru_next = NULL; ber_dupbv( &ee->kstr, &idl_tmp.kstr );