diff --git a/src/topo_group.c b/src/topo_group.c index 96e9406f..56af1799 100644 --- a/src/topo_group.c +++ b/src/topo_group.c @@ -261,7 +261,7 @@ struct TOPO_GROUPS* topo_groups_init(struct UTUN_INSTANCE* instance) { sqlite3_exec(instance->topo_sqlite_db, "PRAGMA journal_mode=WAL", NULL, NULL, NULL); sqlite3_exec(instance->topo_sqlite_db, "PRAGMA foreign_keys=ON", NULL, NULL, NULL); topo_node_sqlite_init(instance->topo_sqlite_db); - DEBUG_INFO(DEBUG_CATEGORY_BGP, "SQLite opened: %s", db_file); + DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "SQLite opened: %s rc=%d db=%p", db_file, rc, (void*)instance->topo_sqlite_db); } else { DEBUG_ERROR(DEBUG_CATEGORY_BGP, "sqlite3_open(%s) failed: %s", db_file, instance->topo_sqlite_db ? sqlite3_errmsg(instance->topo_sqlite_db) : "null db"); diff --git a/tools/chatgui/transport/chat_core.c b/tools/chatgui/transport/chat_core.c index a3012ad0..c091c33a 100644 --- a/tools/chatgui/transport/chat_core.c +++ b/tools/chatgui/transport/chat_core.c @@ -762,6 +762,31 @@ void chat_core_connect_auto(uint64_t node_id, return; } + /* ── DB state diagnostics ── */ + DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "%s: auto_connect DIAG: looking for node=0x%016llx", CC_ID, (unsigned long long)node_id); + { + sqlite3_stmt* diag = NULL; + if (sqlite3_prepare_v2(g_cc.db, "SELECT COUNT(*) FROM node_addresses", -1, &diag, NULL) == SQLITE_OK) { + if (sqlite3_step(diag) == SQLITE_ROW) + DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "%s: auto_connect DIAG: node_addresses total=%d", CC_ID, sqlite3_column_int(diag, 0)); + sqlite3_finalize(diag); + } + if (sqlite3_prepare_v2(g_cc.db, "SELECT node_id, COUNT(*) FROM node_addresses GROUP BY node_id", -1, &diag, NULL) == SQLITE_OK) { + while (sqlite3_step(diag) == SQLITE_ROW) + DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "%s: auto_connect DIAG: node_addresses node=0x%016llx cnt=%d", + CC_ID, (unsigned long long)sqlite3_column_int64(diag, 0), sqlite3_column_int(diag, 1)); + sqlite3_finalize(diag); + } + if (sqlite3_prepare_v2(g_cc.db, "SELECT node_id, name FROM nodes WHERE node_id=?", -1, &diag, NULL) == SQLITE_OK) { + sqlite3_bind_int64(diag, 1, (sqlite3_int64)node_id); + if (sqlite3_step(diag) == SQLITE_ROW) + DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "%s: auto_connect DIAG: node found in nodes table name=%s", + CC_ID, sqlite3_column_text(diag, 1)); + else + DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "%s: auto_connect DIAG: node NOT found in nodes table", CC_ID); + sqlite3_finalize(diag); + } + } /* collect IPv4 addresses */ struct { uint8_t addr[4]; uint16_t port; } addrs[16]; int addr_count = 0;