|
|
|
|
@ -13,20 +13,23 @@
|
|
|
|
|
Исправление общее для Qt и Android. DEBUG-категория `debug` раз в секунду |
|
|
|
|
показывает исходный RTT, RTT в мс, транспортного соседа и метрики аудио. |
|
|
|
|
|
|
|
|
|
[ ] **Восстановление путей conn_mgr на протяжении жизни handle** — план: |
|
|
|
|
разделить начальный TIMEOUT и срок отдельного цикла проб. После потери прямого |
|
|
|
|
пути сразу использовать живой резерв, запустить новый DIRECT/LOCAL/REVERSE; |
|
|
|
|
при отсутствии пригодного посредника сразу повторить INDIRECT. Доставку через |
|
|
|
|
рабочего посредника сохранять до READY прямого пути. Пока есть handles и нет |
|
|
|
|
прямого READY, повторять ограниченные циклы с паузой 1→2→4→8→15с; новая версия |
|
|
|
|
адресов или изменение локальных сокетов запускает пробу без ожидания этой паузы. |
|
|
|
|
NCD удерживать, создавать заново только после CLOSED; существующие UDP/TCP-пробы |
|
|
|
|
не дублировать и не отменять. Рабочие посредники и router-очереди не сбрасывать. |
|
|
|
|
Новые request_id каждого обмена, идемпотентные повторы, отдельный срок обработки |
|
|
|
|
входящего обмена; старые ответы не меняют новый выбор. UP/DOWN — только изменение |
|
|
|
|
общей доступности, TIMEOUT — один раз при неудаче первого подключения. |
|
|
|
|
Закрытие последнего handle отменяет восстановление. Проверить поздний обрыв, |
|
|
|
|
несколько циклов, смену адресов, потерю посредника, устаревшие ответы и close. |
|
|
|
|
[+] **Восстановление путей conn_mgr на протяжении жизни handle** — начальный |
|
|
|
|
TIMEOUT отделён от срока цикла проб. Поздний обрыв запускает новый цикл; |
|
|
|
|
рабочий резерв и NCD сохраняются, при отсутствии резерва INDIRECT стартует сразу. |
|
|
|
|
Циклы ограничены 15с, паузы 1→2→4→8→15с; новая версия узла или локальные сокеты |
|
|
|
|
обходят паузу. Прямой READY останавливает поиск и получает приоритет. |
|
|
|
|
Исходящие request_id и входящие сроки независимы; устаревшие ответы игнорируются. |
|
|
|
|
UP/DOWN отражают общую доступность, TIMEOUT приходит один раз до первого UP. |
|
|
|
|
Последний close отменяет восстановление, включая закрытие из callback. |
|
|
|
|
Проверены десять сетевых сценариев с реальными данными: поздний обрыв, |
|
|
|
|
повторные циклы, смена адресов/сокетов, потеря маршрута посредника, старый ACK, |
|
|
|
|
начальный TIMEOUT с поздним UP и close. ASAN без ошибок; собраны Qt и Android APK. |
|
|
|
|
Алгоритм: `src/routing_layer/conn_mgr_doc.md`. |
|
|
|
|
|
|
|
|
|
[ ] **Общий лимит check.sh после clean** — 01.10.2026: расчёт по времени предыдущего |
|
|
|
|
прогона дал 205с вместе с полной сборкой и оборвал проверку после успешных тестов |
|
|
|
|
до `test_uasync_socket_race`. Повторный запуск использует готовую сборку и больший |
|
|
|
|
лимит. Разделить бюджет сборки и запуска тестов либо учитывать clean при расчёте. |
|
|
|
|
|
|
|
|
|
[ ] **Паузы аудио Qt при звонке с SM** — 01.10.2026, звонок |
|
|
|
|
`939a3ea36f3eeac3`, прямой LAN TCP `192.168.40.250:44604 ↔ 192.168.40.247:44173`. |
|
|
|
|
|