smbd: Call string_term_tdb_data() once instead of 6 times
authorVolker Lendecke <vl@samba.org>
Wed, 22 Jan 2020 15:14:01 +0000 (16:14 +0100)
committerJeremy Allison <jra@samba.org>
Thu, 23 Jan 2020 19:11:34 +0000 (19:11 +0000)
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/smbd/server.c

index 10ae5a42dac92629cff88ee2dd06fe81ed81aab8..ecfde285e2ac903f9a64d77df9d4606d47f07cad 100644 (file)
@@ -1447,6 +1447,7 @@ static NTSTATUS smbd_claim_version(struct messaging_context *msg,
                                   const char *version)
 {
        const char *name = "samba_version_string";
+       const TDB_DATA key = string_term_tdb_data(name);
        struct smbd_claim_version_state state;
        struct g_lock_ctx *ctx;
        NTSTATUS status;
@@ -1457,8 +1458,8 @@ static NTSTATUS smbd_claim_version(struct messaging_context *msg,
                return NT_STATUS_UNSUCCESSFUL;
        }
 
-       status = g_lock_lock(ctx, string_term_tdb_data(name), G_LOCK_READ,
-                            (struct timeval) { .tv_sec = 60 });
+       status = g_lock_lock(
+               ctx, key, G_LOCK_READ, (struct timeval) { .tv_sec = 60 });
        if (!NT_STATUS_IS_OK(status)) {
                DBG_WARNING("g_lock_lock(G_LOCK_READ) failed: %s\n",
                            nt_errstr(status));
@@ -1468,12 +1469,11 @@ static NTSTATUS smbd_claim_version(struct messaging_context *msg,
 
        state = (struct smbd_claim_version_state) { .mem_ctx = ctx };
 
-       status = g_lock_dump(ctx, string_term_tdb_data(name),
-                            smbd_claim_version_parser, &state);
+       status = g_lock_dump(ctx, key, smbd_claim_version_parser, &state);
        if (!NT_STATUS_IS_OK(status) &&
            !NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) {
                DBG_ERR("Could not read samba_version_string\n");
-               g_lock_unlock(ctx, string_term_tdb_data(name));
+               g_lock_unlock(ctx, key);
                TALLOC_FREE(ctx);
                return status;
        }
@@ -1487,8 +1487,8 @@ static NTSTATUS smbd_claim_version(struct messaging_context *msg,
                return NT_STATUS_OK;
        }
 
-       status = g_lock_lock(ctx, string_term_tdb_data(name), G_LOCK_UPGRADE,
-                            (struct timeval) { .tv_sec = 60 });
+       status = g_lock_lock(
+               ctx, key, G_LOCK_UPGRADE, (struct timeval) { .tv_sec = 60 });
        if (!NT_STATUS_IS_OK(status)) {
                DBG_WARNING("g_lock_lock(G_LOCK_WRITE) failed: %s\n",
                            nt_errstr(status));
@@ -1498,9 +1498,8 @@ static NTSTATUS smbd_claim_version(struct messaging_context *msg,
                return NT_STATUS_SXS_VERSION_CONFLICT;
        }
 
-       status = g_lock_write_data(ctx, string_term_tdb_data(name),
-                                  (const uint8_t *)version,
-                                  strlen(version)+1);
+       status = g_lock_write_data(
+               ctx, key, (const uint8_t *)version, strlen(version)+1);
        if (!NT_STATUS_IS_OK(status)) {
                DBG_WARNING("g_lock_write_data failed: %s\n",
                            nt_errstr(status));
@@ -1508,8 +1507,8 @@ static NTSTATUS smbd_claim_version(struct messaging_context *msg,
                return status;
        }
 
-       status = g_lock_lock(ctx, string_term_tdb_data(name), G_LOCK_DOWNGRADE,
-                            (struct timeval) { .tv_sec = 60 });
+       status = g_lock_lock(
+               ctx, key, G_LOCK_DOWNGRADE, (struct timeval) { .tv_sec = 60 });
        if (!NT_STATUS_IS_OK(status)) {
                DBG_WARNING("g_lock_lock(G_LOCK_READ) failed: %s\n",
                            nt_errstr(status));