return NT_STATUS_OK;
}
+static struct db_record *smbXsrv_tcon_global_fetch_locked(
+ struct db_context *db,
+ uint32_t id,
+ TALLOC_CTX *mem_ctx)
+{
+ TDB_DATA key;
+ uint8_t key_buf[SMBXSRV_TCON_GLOBAL_TDB_KEY_SIZE];
+ struct db_record *rec = NULL;
+
+ key = smbXsrv_tcon_global_id_to_key(id, key_buf);
+
+ rec = dbwrap_fetch_locked(db, mem_ctx, key);
+
+ if (rec == NULL) {
+ DBG_DEBUG("Failed to lock global id 0x%08x, key '%s'\n", id,
+ hex_encode_talloc(talloc_tos(), key.dptr, key.dsize));
+ }
+
+ return rec;
+}
+
static NTSTATUS smbXsrv_tcon_table_init(TALLOC_CTX *mem_ctx,
struct smbXsrv_tcon_table *table,
uint32_t lowest_id,
bool is_free = false;
bool was_free = false;
uint32_t id;
- uint8_t key_buf[SMBXSRV_TCON_GLOBAL_TDB_KEY_SIZE];
- TDB_DATA key;
if (i >= min_tries && last_free != 0) {
id = last_free;
id--;
}
- key = smbXsrv_tcon_global_id_to_key(id, key_buf);
-
- global->db_rec = dbwrap_fetch_locked(db, mem_ctx, key);
+ global->db_rec = smbXsrv_tcon_global_fetch_locked(db, id,
+ mem_ctx);
if (global->db_rec == NULL) {
talloc_free(global);
return NT_STATUS_INSUFFICIENT_RESOURCES;
{
struct smbXsrv_tcon_table *table = tcon->table;
NTSTATUS status;
- uint8_t key_buf[SMBXSRV_TCON_GLOBAL_TDB_KEY_SIZE];
- TDB_DATA key;
if (tcon->global->db_rec != NULL) {
DEBUG(0, ("smbXsrv_tcon_update(0x%08x): "
return NT_STATUS_INTERNAL_ERROR;
}
- key = smbXsrv_tcon_global_id_to_key(tcon->global->tcon_global_id,
- key_buf);
-
- tcon->global->db_rec = dbwrap_fetch_locked(table->global.db_ctx,
- tcon->global, key);
+ tcon->global->db_rec = smbXsrv_tcon_global_fetch_locked(
+ table->global.db_ctx,
+ tcon->global->tcon_global_id,
+ tcon->global /* TALLOC_CTX */);
if (tcon->global->db_rec == NULL) {
- DEBUG(0, ("smbXsrv_tcon_update(0x%08x): "
- "Failed to lock global key '%s'\n",
- tcon->global->tcon_global_id,
- hex_encode_talloc(talloc_tos(), key.dptr,
- key.dsize)));
return NT_STATUS_INTERNAL_DB_ERROR;
}
global_rec = tcon->global->db_rec;
tcon->global->db_rec = NULL;
if (global_rec == NULL) {
- uint8_t key_buf[SMBXSRV_TCON_GLOBAL_TDB_KEY_SIZE];
- TDB_DATA key;
-
- key = smbXsrv_tcon_global_id_to_key(
+ global_rec = smbXsrv_tcon_global_fetch_locked(
+ table->global.db_ctx,
tcon->global->tcon_global_id,
- key_buf);
-
- global_rec = dbwrap_fetch_locked(table->global.db_ctx,
- tcon->global, key);
+ tcon->global /* TALLOC_CTX */);
if (global_rec == NULL) {
- DEBUG(0, ("smbXsrv_tcon_disconnect(0x%08x, '%s'): "
- "Failed to lock global key '%s'\n",
- tcon->global->tcon_global_id,
- tcon->global->share_name,
- hex_encode_talloc(global_rec, key.dptr,
- key.dsize)));
error = NT_STATUS_INTERNAL_ERROR;
}
}