regdb: use dbwrap->fetch() instead of fetch_locked() for readonly access
authorStefan Metzmacher <metze@samba.org>
Wed, 26 Mar 2008 20:24:17 +0000 (21:24 +0100)
committerMichael Adam <obnox@samba.org>
Thu, 27 Mar 2008 17:14:56 +0000 (18:14 +0100)
metze

Signed-off-by: Stefan Metzmacher <metze@samba.org>
(This used to be commit 4e2be189e97f653b75bd88135a631ce0f42db267)

source3/registry/reg_backend_db.c

index 52b4a83e873f380115cabaf3cd7232277e947014..8dfb59a43fcf8c6a5a0d27fb7e6ff209a499f29a 100644 (file)
@@ -705,7 +705,7 @@ int regdb_fetch_keys(const char *key, REGSUBKEY_CTR *ctr)
        fstring subkeyname;
        int ret = -1;
        TALLOC_CTX *frame = talloc_stackframe();
-       struct db_record *rec;
+       TDB_DATA value;
 
        DEBUG(11,("regdb_fetch_keys: Enter key => [%s]\n", key ? key : "NULL"));
 
@@ -721,16 +721,16 @@ int regdb_fetch_keys(const char *key, REGSUBKEY_CTR *ctr)
        }
        strupper_m(path);
 
-       rec = regdb->fetch_locked(regdb, frame, string_term_tdb_data(path));
-       if (rec == NULL) {
+       ret = regdb->fetch(regdb, frame, string_term_tdb_data(path), &value);
+       if (ret != 0) {
                ret = 0;
                goto fail;
        }
 
        ctr->seqnum = regdb_get_seqnum();
 
-       buf = rec->value.dptr;
-       buflen = rec->value.dsize;
+       buf = value.dptr;
+       buflen = value.dsize;
 
        if ( !buf ) {
                DEBUG(5,("regdb_fetch_keys: tdb lookup failed to locate key [%s]\n", key));
@@ -840,8 +840,8 @@ int regdb_fetch_values( const char* key, REGVAL_CTR *values )
 {
        char *keystr = NULL;
        TALLOC_CTX *ctx = talloc_stackframe();
-       struct db_record *rec;
        int ret = 0;
+       TDB_DATA value;
 
        DEBUG(10,("regdb_fetch_values: Looking for value of key [%s] \n", key));
 
@@ -854,19 +854,20 @@ int regdb_fetch_values( const char* key, REGVAL_CTR *values )
                goto done;
        }
 
-       rec = regdb->fetch_locked(regdb, ctx, string_term_tdb_data(keystr));
-       if (rec == NULL) {
+       ret = regdb->fetch(regdb, ctx, string_term_tdb_data(keystr), &value);
+       if (ret != 0) {
+               ret = 0;
                goto done;
        }
 
        values->seqnum = regdb_get_seqnum();
 
-       if (!rec->value.dptr) {
+       if (!value.dptr) {
                /* all keys have zero values by default */
                goto done;
        }
 
-       regdb_unpack_values(values, rec->value.dptr, rec->value.dsize);
+       regdb_unpack_values(values, value.dptr, value.dsize);
        ret = regval_ctr_numvals(values);
 
 done: