Keep resolved routing audit details out of the task backlog

This commit is contained in:
evgeny committed 2026-10-24 14:00:22 +02:00
1 parent 14c5ddf864
commit 5c4207c145
2 files changed
+1 -38

No files matched your search

-37
View File
@@ -4,43 +4,6 @@
## Текущие задачи
[ ] **Routing: ограничить длину результата topo_node_format_all при усечении**.
24.10.2026, аудит topo_node: при buf_size=1/2/5/12/13 функция возвращает 13, хотя записаны
соответственно 0/1/4/11/12 байт. Причина — snprintf возвращает требуемую длину маркера,
а код прибавляет её к pos как фактически записанную. FMT_ADD также продолжает наращивать
pos после усечения внутри одного узла, формируя указатели за пределами заявленного буфера.
control_server использует возвращённую длину для text[text_len] и копирования; его текущий
буфер существенно больше 13 байт, сбой рабочего control-вызова этим опытом не установлен.
План: поддерживать pos <= buf_size-1, завершать добавление при заполнении, ограничить маркер
оставшимся местом и возвращать фактическую длину; проверить маленькие буферы и усечение внутри узла/пути.
Воспроизведение: /tmp/topo-node-format-audit.c; лог: /tmp/topo-node-format-audit.log (5 неверных длин из 9 размеров).
Дальнейший аудит остановлен по AGENTS.md; код форматирования и документы модулей не менялись.
[+] **Routing: согласовать обход секции подсетей в topo_node_deserialize с wire-размером**.
24.10.2026: ручная упаковка/разбор доработаны без lib/serialize. Без TOPO_FLAG_SEND_SUBNETS
счётчики подсетей равны 0; противоречащий заголовок отклоняется до выделения объектов.
Все присутствующие секции проверяются независимо от out_*; hop-list читается после подсетей.
Выходы независимы, выдаются атомарно; пустые секции/ошибки возвращают NULL/0. Частичные списки,
имя, подсети и hops освобождаются при любом отказе. Уточнены .h и документы формата.
Новая регрессия воспроизводит приём некорректного пакета до исправления; после — PASS:
64 сочетания флагов/выходов, все усечения и лишний хвост, IPv4/IPv6-префиксы, 18 отказов памяти.
BGP-проверка сохраняет прежние запись и маршрут при некорректном NODEINFO; REALITY fixture
передаёт контекст ядра и освобождает результат. Полный check.sh: 185/185 PASS, proxy 9/9,
burst 1/1, load 8/8 (134217728 байт), 163с. Лог: /tmp/node-wire-full-check-final.log.
Шесть целевых наборов ASAN/UBSan/LSan (wire, snapshot, group_exchange, bgp_paths, NCD, REALITY)
проходят с detect_leaks=1. Зависимости пересобраны с sanitizer-флагами в отдельной копии /tmp;
штатный override флагов Opus снят только в этой копии. Лог: /tmp/node-wire-asan-results.log.
[+] **Routing: запретить пересекающиеся IPv4-подсети при вставке route_lib**.
24.10.2026: по решению пользователя сохранён запрет пересечений. Весь входной набор проверяется
до изменения таблицы, включая внутренние конфликты; /0..32, нормализация host-битов, отказ атомарный.
Поиск упрощён для непересекающихся диапазонов; добавлены проверки /0, /31, /32 и границ.
Новые проверки на старой библиотеке: 5/8 PASS; после исправления: 8/8 PASS, IPv6: 11/11 PASS.
Убрано объявление несуществующей route_add_local_subnet; исправлены wire/API route_ping и
описание выбора сокетов, TCP/UDP-проб, отмены и владения в заголовках routing helpers.
Полный check.sh: 184/184 PASS, proxy 9/9, burst 1/1, load 8/8 (134217728 байт), 196с.
Лог: /tmp/routing-audit-full-check.log; результаты аудита: /tmp/routing-doc-audit-report.txt.
[ ] **ETCP: полезная утилизация нескольких каналов и доставка при зависании части линков** — общая задача открыта.
24.10.2026: тесты отдельно проверяют обработку RTO (опоздание<=20мс), ожидание готового повтора (<=100мс)
и доставку сверх заданной задержки канала (<=100мс). TX учитывается после принятия send.