enum g_lock_type lock_type, struct timeval timeout);
NTSTATUS g_lock_unlock(struct g_lock_ctx *ctx, TDB_DATA key);
-NTSTATUS g_lock_write_data(struct g_lock_ctx *ctx, const char *name,
+NTSTATUS g_lock_write_data(struct g_lock_ctx *ctx, TDB_DATA key,
const uint8_t *buf, size_t buflen);
NTSTATUS g_lock_do(const char *name, enum g_lock_type lock_type,
}
struct g_lock_write_data_state {
- const char *name;
+ TDB_DATA key;
struct server_id self;
const uint8_t *data;
size_t datalen;
ok = g_lock_parse(value.dptr, value.dsize, &lck);
if (!ok) {
- DBG_DEBUG("g_lock_parse for %s failed\n", state->name);
+ DBG_DEBUG("g_lock_parse for %s failed\n",
+ hex_encode_talloc(talloc_tos(),
+ state->key.dptr,
+ state->key.dsize));
state->status = NT_STATUS_INTERNAL_DB_CORRUPTION;
return;
}
state->status = g_lock_store(rec, &lck, NULL);
}
-NTSTATUS g_lock_write_data(struct g_lock_ctx *ctx, const char *name,
+NTSTATUS g_lock_write_data(struct g_lock_ctx *ctx, TDB_DATA key,
const uint8_t *buf, size_t buflen)
{
struct g_lock_write_data_state state = {
- .name = name, .self = messaging_server_id(ctx->msg),
+ .key = key, .self = messaging_server_id(ctx->msg),
.data = buf, .datalen = buflen
};
NTSTATUS status;
- status = dbwrap_do_locked(ctx->db, string_term_tdb_data(name),
+ status = dbwrap_do_locked(ctx->db, key,
g_lock_write_data_fn, &state);
if (!NT_STATUS_IS_OK(status)) {
DBG_WARNING("dbwrap_do_locked failed: %s\n",
return NT_STATUS_SXS_VERSION_CONFLICT;
}
- status = g_lock_write_data(ctx, name, (const uint8_t *)version,
+ status = g_lock_write_data(ctx, string_term_tdb_data(name),
+ (const uint8_t *)version,
strlen(version)+1);
if (!NT_STATUS_IS_OK(status)) {
DBG_WARNING("g_lock_write_data failed: %s\n",
goto fail;
}
- status = g_lock_write_data(ctx, lockname, &data, sizeof(data));
+ status = g_lock_write_data(ctx, string_term_tdb_data(lockname),
+ &data, sizeof(data));
if (!NT_STATUS_EQUAL(status, NT_STATUS_NOT_LOCKED)) {
fprintf(stderr, "unlocked g_lock_write_data returned %s\n",
nt_errstr(status));
goto fail;
}
- status = g_lock_write_data(ctx, lockname, &data, sizeof(data));
+ status = g_lock_write_data(ctx, string_term_tdb_data(lockname),
+ &data, sizeof(data));
if (!NT_STATUS_IS_OK(status)) {
fprintf(stderr, "g_lock_write_data failed: %s\n",
nt_errstr(status));