Support 8 KiB member owner tags without signature or serialization truncation
This commit is contained in:
1 parent
de714f5023
commit
7374d1648c
13 files changed
+297
-169
No files matched your search
@@ -11,11 +11,11 @@
|
||||
3. Сохранять/обновлять ноды через `topo_node_sqlite_node_put()`
|
||||
4. Сохранять каналы через `topo_node_sqlite_channel_put()` (автоматически создаёт таблицу `peers_<channel_id>`)
|
||||
5. Добавлять участников в канал через `topo_node_sqlite_member_put()`
|
||||
6. Читать участников канала через `topo_node_sqlite_channel_peers_all()` — возвращает бинарный буфер со всеми участниками (node_id, ключи, подписи, адреса)
|
||||
6. Читать участников из `peers_<channel_id>`; постраничная сетевая сериализация принадлежит `member_sync`.
|
||||
|
||||
**Нюансы:**
|
||||
- Имена таблиц `peers_<channel_id>` санитизируются: все символы кроме `[a-zA-Z0-9_]` заменяются на `_`
|
||||
- `topo_node_sqlite_channel_peers_all()` формирует компактный бинарный буфер с числом записей в начале (uint16_t)
|
||||
- Сетевой формат участников описан в `src/chat/member_sync_doc.md`; SQLite-слой не дублирует сериализатор.
|
||||
- Ключи в BLOB-полях всегда 32 байта (x25519/ed25519), подписи — 64 байта
|
||||
- Функции `online` и `get_ed25519_pubkey` — простые SELECT-запросы без JOIN
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
| `topo_node_sqlite_member_del(db, ch_id, node_id)` | Удаляет участника из `peers_<ch_id>` |
|
||||
| `topo_node_sqlite_node_update_verified(...)` | Обновляет ключи и имя ноды по условию `update_ts < новое_значение` (защита от stale-данных) |
|
||||
| `topo_node_sqlite_channel_get(...)` | Читает метаданные канала (имя, владелец, ключи, подпись) |
|
||||
| `topo_node_sqlite_channel_peers_all(...)` | Сериализует всех участников канала в бинарный буфер (count + [node_id\|x25519\|ed25519\|flags\|sigs\|name\|addrs]) |
|
||||
| `topo_node_sqlite_node_set_online(db, id, online)` | Устанавливает флаг `online` для ноды |
|
||||
| `topo_node_sqlite_node_get_online(db, id)` | Возвращает 1 если нода online |
|
||||
| `topo_node_sqlite_get_ed25519_pubkey(db, id, out)` | Извлекает ed25519-публичный ключ ноды (32 байта) |
|
||||
|
||||
Reference in new issue
Block a user