[PATCH] Some cleanups around dbwrap
Volker Lendecke
Volker.Lendecke at SerNet.DE
Thu Jul 27 06:04:20 UTC 2017
Hi!
Review appreciated!
Thanks, Volker
--
SerNet GmbH, Bahnhofsallee 1b, 37081 Göttingen
phone: +49-551-370000-0, fax: +49-551-370000-9
AG Göttingen, HRB 2816, GF: Dr. Johannes Loxen
http://www.sernet.de, mailto:kontakt at sernet.de
-------------- next part --------------
From f68056b8316f66a74eab5872a6bd0e27319e7268 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Wed, 9 Nov 2016 16:34:28 +0100
Subject: [PATCH 1/8] dbwrap: Convert dbwrap_store to dbwrap_do_locked
Signed-off-by: Volker Lendecke <vl at samba.org>
---
lib/dbwrap/dbwrap.c | 26 +++++++++++++++++---------
1 file changed, 17 insertions(+), 9 deletions(-)
diff --git a/lib/dbwrap/dbwrap.c b/lib/dbwrap/dbwrap.c
index 22437f6..0e576b3 100644
--- a/lib/dbwrap/dbwrap.c
+++ b/lib/dbwrap/dbwrap.c
@@ -301,22 +301,30 @@ bool dbwrap_exists(struct db_context *db, TDB_DATA key)
return (result == 1);
}
+struct dbwrap_store_state {
+ TDB_DATA data;
+ int flags;
+ NTSTATUS status;
+};
+
+static void dbwrap_store_fn(struct db_record *rec, void *private_data)
+{
+ struct dbwrap_store_state *state = private_data;
+ state->status = dbwrap_record_store(rec, state->data, state->flags);
+}
+
NTSTATUS dbwrap_store(struct db_context *db, TDB_DATA key,
TDB_DATA data, int flags)
{
- struct db_record *rec;
+ struct dbwrap_store_state state = { .data = data, .flags = flags };
NTSTATUS status;
- TALLOC_CTX *frame = talloc_stackframe();
- rec = dbwrap_fetch_locked(db, frame, key);
- if (rec == NULL) {
- TALLOC_FREE(frame);
- return NT_STATUS_NO_MEMORY;
+ status = dbwrap_do_locked(db, key, dbwrap_store_fn, &state);
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
}
- status = dbwrap_record_store(rec, data, flags);
- TALLOC_FREE(frame);
- return status;
+ return state.status;
}
NTSTATUS dbwrap_delete(struct db_context *db, TDB_DATA key)
--
1.9.1
From af4f6eee1261de9656dd19b4a462e93bbda01388 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Wed, 9 Nov 2016 16:37:49 +0100
Subject: [PATCH 2/8] dbwrap: Convert dbwrap_delete to dbwrap_do_locked
Signed-off-by: Volker Lendecke <vl at samba.org>
---
lib/dbwrap/dbwrap.c | 25 ++++++++++++++++---------
1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/lib/dbwrap/dbwrap.c b/lib/dbwrap/dbwrap.c
index 0e576b3..e1d792f 100644
--- a/lib/dbwrap/dbwrap.c
+++ b/lib/dbwrap/dbwrap.c
@@ -327,20 +327,27 @@ NTSTATUS dbwrap_store(struct db_context *db, TDB_DATA key,
return state.status;
}
+struct dbwrap_delete_state {
+ NTSTATUS status;
+};
+
+static void dbwrap_delete_fn(struct db_record *rec, void *private_data)
+{
+ struct dbwrap_delete_state *state = private_data;
+ state->status = dbwrap_record_delete(rec);
+}
+
NTSTATUS dbwrap_delete(struct db_context *db, TDB_DATA key)
{
- struct db_record *rec;
+ struct dbwrap_delete_state state;
NTSTATUS status;
- TALLOC_CTX *frame = talloc_stackframe();
- rec = dbwrap_fetch_locked(db, frame, key);
- if (rec == NULL) {
- TALLOC_FREE(frame);
- return NT_STATUS_NO_MEMORY;
+ status = dbwrap_do_locked(db, key, dbwrap_delete_fn, &state);
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
}
- status = dbwrap_record_delete(rec);
- TALLOC_FREE(frame);
- return status;
+
+ return state.status;
}
NTSTATUS dbwrap_traverse(struct db_context *db,
--
1.9.1
From 9e49b384f7b24775a8afc19dcc0bd31048b1e39e Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Wed, 26 Jul 2017 14:56:53 +0200
Subject: [PATCH 3/8] dbwrap: Simplify dbwrap_store_int32_bystring
Signed-off-by: Volker Lendecke <vl at samba.org>
---
lib/dbwrap/dbwrap_util.c | 19 +++++--------------
1 file changed, 5 insertions(+), 14 deletions(-)
diff --git a/lib/dbwrap/dbwrap_util.c b/lib/dbwrap/dbwrap_util.c
index 22f910d..443a915 100644
--- a/lib/dbwrap/dbwrap_util.c
+++ b/lib/dbwrap/dbwrap_util.c
@@ -77,23 +77,14 @@ NTSTATUS dbwrap_fetch_int32_bystring(struct db_context *db, const char *keystr,
NTSTATUS dbwrap_store_int32_bystring(struct db_context *db, const char *keystr,
int32_t v)
{
- struct db_record *rec;
- int32_t v_store;
+ uint8_t v_store[sizeof(int32_t)];
+ TDB_DATA data = { .dptr = v_store, .dsize = sizeof(v_store) };
NTSTATUS status;
- rec = dbwrap_fetch_locked(db, talloc_tos(),
- string_term_tdb_data(keystr));
- if (rec == NULL) {
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- SIVAL(&v_store, 0, v);
+ SIVAL(v_store, 0, v);
- status = dbwrap_record_store(rec,
- make_tdb_data((const uint8_t *)&v_store,
- sizeof(v_store)),
- TDB_REPLACE);
- TALLOC_FREE(rec);
+ status = dbwrap_store(db, string_term_tdb_data(keystr), data,
+ TDB_REPLACE);
return status;
}
--
1.9.1
From 6a2bd6973f485518557d6bb6a1b71e2fc11dcb90 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Wed, 26 Jul 2017 14:56:53 +0200
Subject: [PATCH 4/8] dbwrap: Simplify dbwrap_store_uint32_bystring
Signed-off-by: Volker Lendecke <vl at samba.org>
---
lib/dbwrap/dbwrap_util.c | 19 +++++--------------
1 file changed, 5 insertions(+), 14 deletions(-)
diff --git a/lib/dbwrap/dbwrap_util.c b/lib/dbwrap/dbwrap_util.c
index 443a915..c7971a9 100644
--- a/lib/dbwrap/dbwrap_util.c
+++ b/lib/dbwrap/dbwrap_util.c
@@ -133,23 +133,14 @@ NTSTATUS dbwrap_fetch_uint32_bystring(struct db_context *db,
NTSTATUS dbwrap_store_uint32_bystring(struct db_context *db,
const char *keystr, uint32_t v)
{
- struct db_record *rec;
- uint32_t v_store;
+ uint8_t v_store[sizeof(uint32_t)];
+ TDB_DATA data = { .dptr = v_store, .dsize = sizeof(v_store) };
NTSTATUS status;
- rec = dbwrap_fetch_locked(db, talloc_tos(),
- string_term_tdb_data(keystr));
- if (rec == NULL) {
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- SIVAL(&v_store, 0, v);
+ SIVAL(v_store, 0, v);
- status = dbwrap_record_store(rec,
- make_tdb_data((const uint8_t *)&v_store,
- sizeof(v_store)),
- TDB_REPLACE);
- TALLOC_FREE(rec);
+ status = dbwrap_store(db, string_term_tdb_data(keystr), data,
+ TDB_REPLACE);
return status;
}
--
1.9.1
From 1efa292dbd21cbcc8d2b87e788c143737e60c505 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Wed, 26 Jul 2017 15:10:55 +0200
Subject: [PATCH 5/8] dbwrap: Simplify dbwrap_trans_store
Signed-off-by: Volker Lendecke <vl at samba.org>
---
lib/dbwrap/dbwrap_util.c | 11 ++---------
1 file changed, 2 insertions(+), 9 deletions(-)
diff --git a/lib/dbwrap/dbwrap_util.c b/lib/dbwrap/dbwrap_util.c
index c7971a9..acd3c18 100644
--- a/lib/dbwrap/dbwrap_util.c
+++ b/lib/dbwrap/dbwrap_util.c
@@ -344,24 +344,17 @@ struct dbwrap_store_context {
static NTSTATUS dbwrap_store_action(struct db_context *db, void *private_data)
{
- struct db_record *rec = NULL;
NTSTATUS status;
struct dbwrap_store_context *store_ctx;
store_ctx = (struct dbwrap_store_context *)private_data;
- rec = dbwrap_fetch_locked(db, talloc_tos(), *(store_ctx->key));
- if (rec == NULL) {
- DEBUG(5, ("fetch_locked failed\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- status = dbwrap_record_store(rec, *(store_ctx->dbuf), store_ctx->flag);
+ status = dbwrap_store(db, *(store_ctx->key), *(store_ctx->dbuf),
+ store_ctx->flag);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(5, ("store returned %s\n", nt_errstr(status)));
}
- TALLOC_FREE(rec);
return status;
}
--
1.9.1
From f2d0678f1745a2f89e9b2e2c27e02c8f7f5f388c Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Wed, 26 Jul 2017 15:12:21 +0200
Subject: [PATCH 6/8] dbwrap: Simplify dbwrap_trans_delete
Signed-off-by: Volker Lendecke <vl at samba.org>
---
lib/dbwrap/dbwrap_util.c | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/lib/dbwrap/dbwrap_util.c b/lib/dbwrap/dbwrap_util.c
index acd3c18..cb98d74 100644
--- a/lib/dbwrap/dbwrap_util.c
+++ b/lib/dbwrap/dbwrap_util.c
@@ -376,22 +376,13 @@ NTSTATUS dbwrap_trans_store(struct db_context *db, TDB_DATA key, TDB_DATA dbuf,
static NTSTATUS dbwrap_delete_action(struct db_context * db, void *private_data)
{
NTSTATUS status;
- struct db_record *rec;
TDB_DATA *key = (TDB_DATA *)private_data;
- rec = dbwrap_fetch_locked(db, talloc_tos(), *key);
- if (rec == NULL) {
- DEBUG(5, ("fetch_locked failed\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- status = dbwrap_record_delete(rec);
+ status = dbwrap_delete(db, *key);
if (!NT_STATUS_IS_OK(status)) {
DBG_INFO("dbwrap_record_delete returned %s\n",
nt_errstr(status));
}
-
- talloc_free(rec);
return status;
}
--
1.9.1
From 26790d7a83e454f11122b2652dcdf292c8bc4cc4 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Wed, 26 Jul 2017 15:14:51 +0200
Subject: [PATCH 7/8] dbwrap: Simplify dbwrap_unmarshall_fn
Signed-off-by: Volker Lendecke <vl at samba.org>
---
lib/dbwrap/dbwrap_util.c | 16 +++-------------
1 file changed, 3 insertions(+), 13 deletions(-)
diff --git a/lib/dbwrap/dbwrap_util.c b/lib/dbwrap/dbwrap_util.c
index cb98d74..df6dea4 100644
--- a/lib/dbwrap/dbwrap_util.c
+++ b/lib/dbwrap/dbwrap_util.c
@@ -709,22 +709,12 @@ static bool dbwrap_unmarshall_fn(TDB_DATA key, TDB_DATA value,
void *private_data)
{
struct dbwrap_unmarshall_state *state = private_data;
- struct db_record *rec;
NTSTATUS status;
- rec = dbwrap_fetch_locked(state->db, state->db, key);
- if (rec == NULL) {
- DEBUG(10, ("%s: dbwrap_fetch_locked failed\n",
- __func__));
- state->ret = NT_STATUS_NO_MEMORY;
- return false;
- }
-
- status = dbwrap_record_store(rec, value, 0);
- TALLOC_FREE(rec);
+ status = dbwrap_store(state->db, key, value, 0);
if (!NT_STATUS_IS_OK(status)) {
- DEBUG(10, ("%s: dbwrap_record_store failed: %s\n",
- __func__, nt_errstr(status)));
+ DBG_DEBUG("dbwrap_record_store failed: %s\n",
+ nt_errstr(status));
state->ret = status;
return false;
}
--
1.9.1
From 11aa5a436304af1d4641c8e49858cdba9754bfd6 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Wed, 26 Jul 2017 15:18:16 +0200
Subject: [PATCH 8/8] libhttp: Remove an unneeded include
Signed-off-by: Volker Lendecke <vl at samba.org>
---
source4/lib/http/http.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/source4/lib/http/http.c b/source4/lib/http/http.c
index c6976ee..6260d69 100644
--- a/source4/lib/http/http.c
+++ b/source4/lib/http/http.c
@@ -20,7 +20,6 @@
*/
#include "includes.h"
-#include <talloc_dict.h>
#include "lib/util/tevent_ntstatus.h"
#include "http.h"
#include "http_internal.h"
--
1.9.1
More information about the samba-technical
mailing list