r19363: - don't need to store the baseinfo message after cache load
authorAndrew Tridgell <tridge@samba.org>
Tue, 17 Oct 2006 01:21:25 +0000 (01:21 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:21:17 +0000 (14:21 -0500)
(This used to be commit 8c091bcdece5c17073838ad2367f3f4e22e97c31)

source4/lib/ldb/ldb_tdb/ldb_cache.c
source4/lib/ldb/ldb_tdb/ldb_tdb.h

index a98b5d825730903f837b69a13590c1e937ad8210..a903ceb4cdf184843566a6b736b9eddafc1c552d 100644 (file)
@@ -320,6 +320,7 @@ int ltdb_cache_load(struct ldb_module *module)
        struct ldb_dn *baseinfo_dn = NULL;
        struct ldb_dn *indexlist_dn = NULL;
        uint64_t seq;
+       struct ldb_message *baseinfo;
 
        if (ltdb->cache == NULL) {
                ltdb->cache = talloc_zero(ltdb, struct ltdb_cache);
@@ -334,30 +335,29 @@ int ltdb_cache_load(struct ldb_module *module)
                }
        }
 
-       talloc_free(ltdb->cache->baseinfo);
-       ltdb->cache->baseinfo = talloc(ltdb->cache, struct ldb_message);
-       if (ltdb->cache->baseinfo == NULL) goto failed;
+       baseinfo = talloc(ltdb->cache, struct ldb_message);
+       if (baseinfo == NULL) goto failed;
 
        baseinfo_dn = ldb_dn_explode(module->ldb, LTDB_BASEINFO);
        if (baseinfo_dn == NULL) goto failed;
 
-       if (ltdb_search_dn1(module, baseinfo_dn, ltdb->cache->baseinfo) == -1) {
+       if (ltdb_search_dn1(module, baseinfo_dn, baseinfo) == -1) {
                goto failed;
        }
        
        /* possibly initialise the baseinfo */
-       if (!ltdb->cache->baseinfo->dn) {
+       if (!baseinfo->dn) {
                if (ltdb_baseinfo_init(module) != 0) {
                        goto failed;
                }
-               if (ltdb_search_dn1(module, baseinfo_dn, ltdb->cache->baseinfo) != 1) {
+               if (ltdb_search_dn1(module, baseinfo_dn, baseinfo) != 1) {
                        goto failed;
                }
        }
 
        /* if the current internal sequence number is the same as the one
           in the database then assume the rest of the cache is OK */
-       seq = ldb_msg_find_attr_as_uint64(ltdb->cache->baseinfo, LTDB_SEQUENCE_NUMBER, 0);
+       seq = ldb_msg_find_attr_as_uint64(baseinfo, LTDB_SEQUENCE_NUMBER, 0);
        if (seq == ltdb->sequence_number) {
                goto done;
        }
@@ -396,11 +396,13 @@ int ltdb_cache_load(struct ldb_module *module)
        }
 
 done:
+       talloc_free(baseinfo);
        talloc_free(baseinfo_dn);
        talloc_free(indexlist_dn);
        return 0;
 
 failed:
+       talloc_free(baseinfo);
        talloc_free(baseinfo_dn);
        talloc_free(indexlist_dn);
        return -1;
index 95a1d23905270609c9b7c8b9857b7ed56a453f57..c20c3bd5f9c4473a7b9015b2bfb15fa599ed7774 100644 (file)
@@ -22,7 +22,6 @@ struct ltdb_private {
        unsigned long long sequence_number;
 
        struct ltdb_cache {
-               struct ldb_message *baseinfo;
                struct ldb_message *indexlist;
                struct ldb_message *attributes;
                struct ldb_message *subclasses;