fix: peer discovery queries include IPv6 (family IN (4,6))

get_public_peers, get_local_peers, get_supernode_peers
were filtering na.family=4 only — never found v6 peers.
Changed to na.family IN (4,6).
This commit is contained in:
evgeny committed 2026-08-06 14:20:33 +03:00
1 parent 25ebad9f52
commit e2d8f68c9a
2 files changed
+10 -5

No files matched your search

+3 -3
View File
@@ -730,7 +730,7 @@ int topo_node_sqlite_get_public_peers(sqlite3* db, const char* channel_id,
(void)channel_id;
const char* sql =
"SELECT DISTINCT na.node_id FROM node_addresses na"
" WHERE na.node_id!=?1 AND na.family=4 AND na.addr_type IN (1,2)"
" WHERE na.node_id!=?1 AND na.family IN (4,6) AND na.addr_type IN (1,2)"
" AND EXISTS (SELECT 1 FROM nodes n WHERE n.node_id=na.node_id)";
sqlite3_stmt* st = NULL;
if (sqlite3_prepare_v2(db, sql, -1, &st, NULL) != SQLITE_OK) return -1;
@@ -754,7 +754,7 @@ int topo_node_sqlite_get_supernode_peers(sqlite3* db, const char* channel_id,
char peers_tbl[80]; peers_table_name(channel_id, peers_tbl, sizeof(peers_tbl));
char sql[256]; snprintf(sql, sizeof(sql),
"SELECT p.node_id FROM \"%s\" p WHERE p.node_type=4"
" AND EXISTS (SELECT 1 FROM node_addresses na WHERE na.node_id=p.node_id AND na.family=4)",
" AND EXISTS (SELECT 1 FROM node_addresses na WHERE na.node_id=p.node_id AND na.family IN (4,6))",
peers_tbl);
sqlite3_stmt* st = NULL;
if (sqlite3_prepare_v2(db, sql, -1, &st, NULL) != SQLITE_OK) return -1;
@@ -777,7 +777,7 @@ int topo_node_sqlite_get_local_peers(sqlite3* db, const char* channel_id,
(void)channel_id;
const char* sql =
"SELECT DISTINCT na.node_id FROM node_addresses na"
" WHERE na.node_id!=?1 AND na.family=4 AND na.addr_type IN (0,3)"
" WHERE na.node_id!=?1 AND na.family IN (4,6) AND na.addr_type IN (0,3)"
" AND EXISTS (SELECT 1 FROM nodes n WHERE n.node_id=na.node_id)";
sqlite3_stmt* st = NULL;
if (sqlite3_prepare_v2(db, sql, -1, &st, NULL) != SQLITE_OK) return -1;