s3:dbwrap_ctdb: use db_ctdb_ltdb_fetch() inside db_ctdb_transaction_fetch()
authorMichael Adam <obnox@samba.org>
Wed, 28 Oct 2009 00:28:38 +0000 (01:28 +0100)
committerMichael Adam <obnox@samba.org>
Tue, 3 Nov 2009 00:02:36 +0000 (01:02 +0100)
Michael

source3/lib/dbwrap_ctdb.c

index 145c0f65ea831bd9def68af6dcc21d3949df5470..e4399c60381e7f26552bcdb75f00cb73960d927c 100644 (file)
@@ -416,24 +416,14 @@ static int db_ctdb_transaction_fetch(struct db_ctdb_ctx *db,
                                     TDB_DATA key, TDB_DATA *data)
 {
        struct db_ctdb_transaction_handle *h = db->transaction;
+       NTSTATUS status;
 
-       *data = tdb_fetch(h->ctx->wtdb->tdb, key);
+       status = db_ctdb_ltdb_fetch(h->ctx, key, NULL, mem_ctx, data);
 
-       if (data->dptr != NULL) {
-               uint8_t *oldptr = (uint8_t *)data->dptr;
-               data->dsize -= sizeof(struct ctdb_ltdb_header);
-               if (data->dsize == 0) {
-                       data->dptr = NULL;
-               } else {
-                       data->dptr = (uint8 *)
-                               talloc_memdup(
-                                       mem_ctx, data->dptr+sizeof(struct ctdb_ltdb_header),
-                                       data->dsize);
-               }
-               SAFE_FREE(oldptr);
-               if (data->dptr == NULL && data->dsize != 0) {
-                       return -1;
-               }
+       if (NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) {
+               *data = tdb_null;
+       } else if (!NT_STATUS_IS_OK(status)) {
+               return -1;
        }
 
        if (!h->in_replay) {