chat: user-friendly INFO logs for invite/connect flow
- chat_sync.c: invite entry, JOINED/TIMEOUT messages - conn_mgr_core.c: invite start (addrs+udp+tcp), NCD UP/DOWN/TIMEOUT, TCP connect/ready/close, membership check send/receive/confirm/deny, overall timeout - node_conn_direct.c: NCD event names instead of numbers
This commit is contained in:
1 parent
c35135cb52
commit
c2191aad3b
34 files changed
+597
-230
No files matched your search
@@ -58,6 +58,7 @@ int topo_node_sqlite_init(sqlite3* db) {
|
||||
");"
|
||||
"CREATE INDEX IF NOT EXISTS idx_na_node ON node_addresses(node_id);"
|
||||
"CREATE UNIQUE INDEX IF NOT EXISTS idx_na_unique ON node_addresses(node_id, family, socket_id, addr_type);"
|
||||
"CREATE INDEX IF NOT EXISTS idx_na_addr_lookup ON node_addresses(family, address, port, socket_id);"
|
||||
|
||||
"CREATE TABLE IF NOT EXISTS channels ("
|
||||
" channel_id TEXT PRIMARY KEY," // ID канала
|
||||
@@ -178,6 +179,51 @@ int topo_node_sqlite_node_put(sqlite3* db, struct TOPO_GROUPS* groups, struct TO
|
||||
}
|
||||
}
|
||||
|
||||
/* Удалить адреса других узлов, конфликтующие с адресами текущего */
|
||||
{
|
||||
sqlite3_stmt* del_cfl = NULL;
|
||||
if (sqlite3_prepare_v2(db,
|
||||
"DELETE FROM node_addresses WHERE node_id != ?1 AND family = ?2 AND address = ?3 AND port = ?4 AND socket_id = ?5",
|
||||
-1, &del_cfl, NULL) == SQLITE_OK) {
|
||||
struct TOPO_ADDR4* a4 = ni->v4_addrs;
|
||||
while (a4) {
|
||||
sqlite3_bind_int64(del_cfl, 1, (sqlite3_int64)ni->node_id);
|
||||
sqlite3_bind_int(del_cfl, 2, 4);
|
||||
sqlite3_bind_blob(del_cfl, 3, a4->addr, 4, SQLITE_STATIC);
|
||||
sqlite3_bind_int(del_cfl, 4, a4->port);
|
||||
sqlite3_bind_int(del_cfl, 5, (int)a4->socket_id);
|
||||
sqlite3_step(del_cfl);
|
||||
if (sqlite3_changes(db) > 0)
|
||||
DEBUG_INFO(DEBUG_CATEGORY_BGP, "node_put: removed stale v4 addr %d.%d.%d.%d:%u sock=%d other_node nid=%016llx",
|
||||
a4->addr[0], a4->addr[1], a4->addr[2], a4->addr[3], a4->port, (int)a4->socket_id,
|
||||
(unsigned long long)ni->node_id);
|
||||
sqlite3_reset(del_cfl);
|
||||
a4 = a4->next;
|
||||
}
|
||||
struct TOPO_ADDR6* a6 = ni->v6_addrs;
|
||||
while (a6) {
|
||||
if (a6->addr[0] == 0xFE && (a6->addr[1] & 0xC0) == 0x80) { a6 = a6->next; continue; }
|
||||
sqlite3_bind_int64(del_cfl, 1, (sqlite3_int64)ni->node_id);
|
||||
sqlite3_bind_int(del_cfl, 2, 6);
|
||||
sqlite3_bind_blob(del_cfl, 3, a6->addr, 16, SQLITE_STATIC);
|
||||
sqlite3_bind_int(del_cfl, 4, a6->port);
|
||||
sqlite3_bind_int(del_cfl, 5, (int)a6->socket_id);
|
||||
sqlite3_step(del_cfl);
|
||||
sqlite3_reset(del_cfl);
|
||||
a6 = a6->next;
|
||||
}
|
||||
sqlite3_finalize(del_cfl);
|
||||
}
|
||||
}
|
||||
|
||||
addr_stmt_beg:
|
||||
{
|
||||
int v4cnt = topo_list_count((struct _topo_head*)ni->v4_addrs);
|
||||
int v6cnt = topo_list_count((struct _topo_head*)ni->v6_addrs);
|
||||
DEBUG_INFO(DEBUG_CATEGORY_BGP, "node_put: nid=%016llx INSERT v4=%d v6=%d",
|
||||
(unsigned long long)ni->node_id, v4cnt, v6cnt);
|
||||
}
|
||||
|
||||
sqlite3_stmt* addr_stmt = NULL;
|
||||
if (sqlite3_prepare_v2(db,
|
||||
"INSERT INTO node_addresses(node_id, family, protocol, address, port, rtt, addr_type, socket_id)"
|
||||
@@ -240,13 +286,25 @@ int topo_node_sqlite_node_put(sqlite3* db, struct TOPO_GROUPS* groups, struct TO
|
||||
sqlite3_bind_null(addr_stmt, 6);
|
||||
sqlite3_bind_int(addr_stmt, 7, at);
|
||||
sqlite3_bind_int(addr_stmt, 8, (int)a6->socket_id);
|
||||
sqlite3_step(addr_stmt); sqlite3_reset(addr_stmt);
|
||||
{ int rc = sqlite3_step(addr_stmt);
|
||||
if (rc != SQLITE_DONE && rc != SQLITE_OK)
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_BGP, "node_put: INSERT v6 FAILED nid=%016llx rc=%d err=%s",
|
||||
(unsigned long long)ni->node_id, rc, sqlite3_errmsg(db)); }
|
||||
sqlite3_reset(addr_stmt);
|
||||
a6 = a6->next;
|
||||
}
|
||||
sqlite3_finalize(addr_stmt);
|
||||
}
|
||||
|
||||
sqlite3_exec(db, "COMMIT", NULL, NULL, NULL);
|
||||
{ int total = 0;
|
||||
sqlite3_stmt* cnt_st;
|
||||
if (sqlite3_prepare_v2(db, "SELECT count(*) FROM node_addresses WHERE node_id=?", -1, &cnt_st, NULL) == SQLITE_OK) {
|
||||
sqlite3_bind_int64(cnt_st, 1, (sqlite3_int64)ni->node_id);
|
||||
if (sqlite3_step(cnt_st) == SQLITE_ROW) total = sqlite3_column_int(cnt_st, 0);
|
||||
sqlite3_finalize(cnt_st); }
|
||||
DEBUG_INFO(DEBUG_CATEGORY_BGP, "node_put: nid=%016llx COMMITED total=%d",
|
||||
(unsigned long long)ni->node_id, total); }
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user