From 29db91386cf2e639e7fa5dd683427e71a27cb7cd Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 15 Feb 2011 18:16:43 +0100 Subject: [PATCH] s3-amend: Don't overwrite existing values MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This saves a ton of tdb transactions on smbd startup Andreas, Günther, please check! (cherry picked from commit f56432c348d0243b43a8cce42c0a438902854272) --- source3/registry/reg_api.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/source3/registry/reg_api.c b/source3/registry/reg_api.c index acce7ab1b47..7c2e01dccc5 100644 --- a/source3/registry/reg_api.c +++ b/source3/registry/reg_api.c @@ -659,6 +659,7 @@ done: WERROR reg_setvalue(struct registry_key *key, const char *name, const struct registry_value *val) { + struct regval_blob *existing; WERROR err; int res; @@ -670,6 +671,15 @@ WERROR reg_setvalue(struct registry_key *key, const char *name, return err; } + existing = regval_ctr_getvalue(key->values, name); + + if ((existing != NULL) && + (regval_size(existing) == val->data.length) && + (memcmp(regval_data_p(existing), val->data.data, + val->data.length) == 0)) { + return WERR_OK; + } + res = regval_ctr_addvalue(key->values, name, val->type, val->data.data, val->data.length); -- 2.11.4.GIT