From 4a00da31da51a50a9c1033597b7520455acc2de6 Mon Sep 17 00:00:00 2001 From: evgeny Date: Sat, 24 Oct 2026 16:50:41 +0200 Subject: [PATCH] Document complete membership queries separately from row presence --- src/routing_layer/topo_node_sqlite.h | 2 +- src/routing_layer/topo_node_sqlite_doc.md | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/routing_layer/topo_node_sqlite.h b/src/routing_layer/topo_node_sqlite.h index 7a76862b..6a2de302 100644 --- a/src/routing_layer/topo_node_sqlite.h +++ b/src/routing_layer/topo_node_sqlite.h @@ -160,7 +160,7 @@ struct topo_connect_peer { uint8_t client_type, supernode; }; -/* Все неудалённые участники, включая self; сначала connected, затем RTT/node_id. +/* Все полные неудалённые участники (source=0, deleted=0), включая self; сначала connected, затем RTT/node_id. * 0/-1; массив принадлежит вызывающему и освобождается u_free(). */ int topo_node_sqlite_get_connect_peers(sqlite3* db, const char* channel_id, struct topo_connect_peer** out, size_t* out_count); diff --git a/src/routing_layer/topo_node_sqlite_doc.md b/src/routing_layer/topo_node_sqlite_doc.md index f2ca7f79..908d6696 100644 --- a/src/routing_layer/topo_node_sqlite_doc.md +++ b/src/routing_layer/topo_node_sqlite_doc.md @@ -96,6 +96,8 @@ Placeholder не участвует в Merkle-хеше; сетевой форм member_exists, member_in_channel, get_member_channels учитывают любое наличие строки, в том числе source=1 и deleted=1. Это не проверка полной подписанной записи участника. +member_allowed требует source=0 и deleted=0: его используют допуск CHAT-сессий и запуск связи после INVITE_INFO. +Запись в БД должна быть проверена перед сохранением; SQL-запрос подписи повторно не проверяет. member_get_join требует ровно 64 байта подписи; channel_get проверяет размер запрошенных ключей/подписи. member_del физически удаляет строку без tombstone и пересчёта Merkle. @@ -110,7 +112,7 @@ channel_delete удаляет peers/msg/feedback, канал с приватны | API | Выборка | | --- | --- | -| get_connect_peers | Все неудалённые участники канала, включая self; connected, затем известный RTT/RTT/node_id | +| get_connect_peers | Полные неудалённые участники (source=0, deleted=0), включая self; connected, затем известный RTT/RTT/node_id | | get_connected_peers | connected=1, deleted=0 в указанном канале | | get_supernode_peers | node_type=4, deleted=0 в указанном канале | | get_public_peers | Глобальные адреса addr_type 1/2 с записью nodes, кроме self и удалённых в указанном канале |